[[20051026171013]] 『別シートにデーター抽出!』(buu) ページの最後に飛ぶ

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

 

『別シートにデーター抽出!』(buu)
 任意の条件(月)を指定して別シートに該当する複数のデータを抽出したいのですが
 マクロでないと出来ませんか?

 (例)				
	<Sheet1>			
	A	B	C	D
 1	氏名	更新日	種類	型番
 2	山田	2006/6/26	aaa	123
 3	田中 A	2010/4/19	bbb	222
 4	鈴木	2005/10/18	ccc	115
 5	今田	2009/3/22	ddd	333
 6	後藤	2008/4/22	eee	444
 7	田中 B	2006/2/17	fff	555
 8	小泉	2009/2/21	jjj	666
 9	阿部	2009/9/1	kkk	777
 10	伊藤	2009/4/14	lll	888
 11	大沢	2009/8/17	mmm	999

	抽出条件	2月		

	<Sheet2>			
	A	B	C	D
 1      抽出条件	2月
 2
 3	氏名	更新日	種類	型番
 4	田中 B	2006/2/17	fff	555
 5	小泉	2009/2/21	jjj	666
 6				
 7

 関数でやるとすれば、VLOOKUP関数 なども
使える関数のひとつになると思いますよ。
                  (SS)

 フィルタオプションの設定 とかも   
 使えそうな気がしますよ。				
 メニュー→データ→フィルタ→フィルタオプションの設定
 (HANA)

 (SS)さん(HANA)さん回答ありがとうございます。
 
 まず、(HANA)さんのフィルタオプションの設定方式だと
 毎回の設定に手間取りそうなのですこし初心者には操作しずらそうですね。
 
 (SS)さんのVLOOKUP関数で考えてみたのですが、日付中の"月"での検索の仕方が
 どうもうまくいかなくて戸惑っています。
 設定方法をご指導戴けないでしょうか?
     (buu)

 Sheet2
 A3 =IF(SUM((--LEFT($B$1,LEN($B$1)-1)=MONTH(Sheet1!$B$2:$B$11))*1)<ROW(A1),"",
   INDEX(Sheet1!$A$2:$D$11,SMALL(IF(--LEFT($B$1,LEN($B$1)-1)=MONTH(Sheet1!$B$2:$B$11),ROW($A$1:$A$10),""),ROW(A1)),COLUMN(A1)))
 ↑配列数式
 Ctrl + Shift + Enter で、確定。
 { 数式 }になればOK
 必要範囲までコピペ

 ※B2 は、手入力で「2月」としてあるものとしてます。
 ※更新日の書式設定は「yyyy/m/d」としてください。

 (キリキ)(〃⌒o⌒)b

 フィルタオプションの設定 等と大口をたたいてみましたが
 どうやらシートが違うと抽出出来ないみたいです、ごめんなさい。

 VLOOKUP関数で考えてみたのでのせておきます。

 1.Sheet1のA列、B列を作業列として使うので、挿入
     A2=COUNTIF($B$2:B2,1)
     B2=IF(MONTH(D2)=VALUE(LEFT(Sheet2!$B$1,LEN(Sheet2!$B$1)-1)),1,0)

 2.Sheet2が
          A        B      C         D
     1 抽出条件 2月
     2
     3           氏名  更新日  ・・・・
     4    1
     5    2
     6      3

       となってるとして、
     A3=MAX(Sheet1!$A:$A)
     B4=IF($A$3>=$A4,VLOOKUP($A4,Sheet1!$A:$E,3,FALSE),"")
        (列方向にコピーの際、変更して下さい。↑)

 相変わらず、力業ですが。
 (HANA) 

 作業列が一列で良い方法を思いついたので訂正します。

 1.Sheet1のA列を作業列として使うので、挿入
     A2=IF(IF(MONTH(C2)=VALUE(LEFT(Sheet2!$B$1,LEN(Sheet2!$B$1)-1)),1,0)=0,A1,A1+1)

 2.Sheet2の形は上にあげた状態として
     B4=IF(MAX(Sheet1!$A:$A)>=$A4,VLOOKUP($A4,Sheet1!$A:$E,2,FALSE),"")
     C4=IF(MAX(Sheet1!$A:$A)>=$A4,VLOOKUP($A4,Sheet1!$A:$E,3,FALSE),"")
     D4=IF(MAX(Sheet1!$A:$A)>=$A4,VLOOKUP($A4,Sheet1!$A:$E,4,FALSE),"")
     E4=IF(MAX(Sheet1!$A:$A)>=$A4,VLOOKUP($A4,Sheet1!$A:$E,5,FALSE),"")

     として、必要行コピーです。

   Sheet1のデータが増えていくのであれば、ある程度A列を沢山(A100迄とか)
   コピーしておいてどこかに 
   =IF(COUNT(A:A)<COUNTA(B:B)-1,"A列の数式をのばしてください。","")
   のような関数を入れておくとか
   Sheet2であれば
   =IF(MAX(A:A)<MAX(Sheet1!$A:$A),"A〜E列の数式をのばしてください。","")
   ですかね。

 (HANA)

 ちょっと横道にそれますが・・・・
 > フィルタオプションの設定 等と大口をたたいてみましたが
 > どうやらシートが違うと抽出出来ないみたいです、ごめんなさい。
 Sheet2のC1は空白、C2に=MONTH(Sheet1!B2)=2 として
 Sheet2をアクティブにした状態で、フィルタオプションの設定を開始します。
 フィルタオプションの設定で
 リスト範囲:Sheet1!$A$1:$D$11
 検索条件範囲:Sheet2!$C$1:$C$2
 抽出範囲:Sheet2!$A$3:$D$3
 とすると、↓のようになりました。
 	A	B	C	D
1	抽出条件	2月		
2			FALSE	
3	氏名	更新日	種類	型番
4	田中 B	2006/2/17	fff	555
5	小泉	2009/2/21	jjj	666
 以上、報告のみにて失礼します。 (Hatch)

 そっち(Sheet2)から攻めればよかったんですね。
 (Hatch)さん、ありがとうございました。

 (HANA)

 ここに回答してくださった皆さん、いろいろありがとうございました。
 夫々の回答を試して見たいと思います。
  (buu)

コメント返信:

[ 一覧(最新更新順) ]


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