[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『別シートにデーター抽出!』(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.