[[20071117125730]] 『一定の記号がセルに挿入した時、他のセル分も含め』(63の手習い) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『一定の記号がセルに挿入した時、他のセル分も含めて別シートに挿入したい』(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)


*Hatchさん、gon-64さん
早速の回答ありがとうございます。感謝申し上げます
*じっくりとサビタ頭に理解させながらやってみます。ありがとうございました。


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.