[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『一定の記号がセルに挿入した時、他のセル分も含めて別シートに挿入したい』(63の手習い)
エクセル初心者の年寄りです。初心者でもわかるように教えてください。
シート1 A B C D E F G H I 日付 コード 種目 品名 数量 単価 収入金額 単価 支出金額 1 1月1日 1 A 会費 1 5,000 5,000 2 2月3日 2 B 交通費 1 380 380 3 3月3日 5 C 筆購入 2 780 1,560 4 3月3日 1 A 会費 2 5,000 10,000 5 3月8日 2 B 交通費 1 450 450 6 4月3日 5 C 紙購入 5 200 1,000 7 2月3日 3 B タクシー代 1 670 670
シート1に上記のように記入した時点で、種目Aはシート2に(種目B.Cはシート3に) 自動的に日付順に自動抽出したいが、方法あれば教えてほしい。
シート2 A B C D E F G 日付 コード 種目 品名 数量 単価 収入金額 1 1月1日 1 A 会費 1 5,000 5,000 2 3月3日 1 A 会費 2 5,000 10,000
シート3 A B C D E F G 日付 コード 種目 品名 数量 単価 支出金額 1 2月3日 2 B 交通費 1 380 380 2 3月3日 5 C 筆購入 2 780 1,560 3 3月8日 2 B 交通費 1 450 450 4 4月3日 5 C 紙購入 5 200 1,000 5 2月3日 3 B タクシー代 1 670 670 Win2000です。
データ数は最大どの程度になると予測されますか?
オートフィルタなどで該当データを抽出して、別シートへ貼り付け後、並べ替えることで実現できそうと思います。 「自動的に」ということなので、この辺をうまくマクロ化すればよいと思いますが、いかがでしょう? # 質問文の改行を編集しました。 (Hatch)
#Hatchさんー質問文編集ありがとうございます。 1)初心者なのでデーター量の意味はシート1は列で8列+行で50行で解かりますでしょうか? 2)関数は少し解かり、オートフイルターも少し意味わかりますが、マクロはまったくわかりません。 わがまま言いまして申し訳ございません このへん踏まえてお願いします。
複雑な式は考えるのが大変なので(^^ゞ 作業列を3列ほど利用する例です。 L2に=IF(C2="","",IF(C2="A",("1"&TEXT(A2,"000000")&TEXT(ROW(),"000"))*1,("2"&TEXT(A2,"000000")&TEXT(ROW(),"000"))*1)) M2に=IF(LEFT(K2,1)="1",COUNTIF($K$2:$K$50,"<"&K2)+1,"") N2に=IF(LEFT(K2,1)="2",COUNTIF($K$2:$K$50,"<"&K2)-MAX($L$2:$L$50)+1,"") とすると、 K L M 1 作業列 種目A 種目B,C 2 1039083002 1 3 2039116003 1 4 2039144004 3 5 1039144005 2 6 2039149006 4 7 2039175007 5 8 2039116008 2 となります。
Sheet2のA2に =IF(ISNA(MATCH(ROW(A1),Sheet1!$L$2:$L$50,0)),"",INDEX(Sheet1!$A$2:$I$50,MATCH(ROW(A1),Sheet1!$L$2:$L$50,0),COLUMN(A1))) として、G2までコピー後、さらに下方向へコピーします。
Sheet3のA2には =IF(ISNA(MATCH(ROW(A1),Sheet1!$M$2:$M$50,0)),"",INDEX(Sheet1!$A$2:$I$50,MATCH(ROW(A1),Sheet1!$M$2:$M$50,0),COLUMN(A1))) として、E2までコピーします。 F2には =IF(ISNA(MATCH(ROW(F1),Sheet1!$M$2:$M$50,0)),"",INDEX(Sheet1!$A$2:$I$50,MATCH(ROW(F1),Sheet1!$M$2:$M$50,0),COLUMN(H1))) として、G2までコピーします。 その後、A2:G2を下方向へコピーします。 (Hatch)
提示の式は配列数式です。A2へ入力したらCtrl と Shift を押しながら Enter してください。式が{ }で囲まれます。{=式}
Sheet2の A2=IF(COUNTIF(Sheet1!$C$2:$C$8,"A")<ROW(A1),"",INDEX(Sheet1!A$1:A$8,SMALL(IF(Sheet1!$C$2:$C$8="A", ROW(Sheet1!$A$2:$A$8)),ROW(A1)))) G2までコピー、A2:G2をフィルダウン
Sheet3の A2=IF(COUNTIF(Sheet1!$C$2:$C$8,"<>"&"A")<ROW(A1),"",INDEX(Sheet1!A$1:A$8,SMALL(IF(Sheet1!$C$2:$C$8<>"A", ROW(Sheet1!$A$2:$A$8)),ROW(A1)))) E2までコピー
F2=IF(COUNTIF(Sheet1!$C$2:$C$8,"<>"&"A")<ROW(A1),"",INDEX(Sheet1!H$1:H$8,SMALL(IF(Sheet1!$C$2:$C$8<>"A", ROW(Sheet1!$A$2:$A$8)),ROW(A1)))) G2へコピー、A2:G2をフィルダウン
“達人”芳坂和行氏に学ぶ、エクセル(Excel)「配列数式」講座 http://pc.nikkeibp.co.jp/pc21/special/hr/index.shtml (gon-64)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.