[[20070524150737]] 『データの抽出』(じゅん) ページの最後に飛ぶ

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

 

『データの抽出』(じゅん)
教えて下さい。
 シート1に以下のような表があります。

   A             B           C             D          E              F 
1 No.     NAME    実施日    予定日    実施日    予定日
2 001        あいうえお  2007/4/19     2007/4/19    2007/7/3      2007/7/19
3 002    かきくけこ  2007/5/2      2007/5/10    2007/8/11     2007/8/10
 ・
 ・
 ・
 ・
 ・

 シート2のA1に入力した日付と、シート1のいずれかの日付が一致した行を抽出したい
    A         B       C         D            E            F          G
1 2007/5/10  No.     NAME      実施日    予定日   実施日   予定日
2            002   かきくけこ 2007/5/2     2007/5/10   2007/8/11   2007/8/10
 ・
 ・

 vlookupというのがあると、こちらで知ったのでいろいろまねして作ってみたのですが、
 B2=vlookup($A$1,sheet1!$A$2:$F$10,1,false)と入力して、C,D,E・・・にコピーをしてみましたが、どこも#N/Aと出てしまいます。
 見よう見まねで、理解できないまま使っているのでどこがまちがえているのかわかりません。どうしたらいいのでしょうか?

 検索対象列がテーブル範囲の途中に有る場合はINDEX関数・MATCH関数を使用すれば出来ます。
 (DON)

 Sheet1
   A     B           C            D          E              F           G
 1 No.  NAME    実施日    予定日    実施日    予定日
 2 001    あいうえお  2007/4/19     2007/4/19    2007/7/3      2007/7/19    0
 3 002  かきくけこ  2007/5/2      2007/5/10    2007/8/11     2007/8/10   3

 G2=IF(ISERROR(MATCH(Sheet2!$A$1,A2:F2,0)),0,ROW())
 G3以下へフィルコピー(検索値2007/5/10が表の3行目にある)

 Sheet2
   A        B       C          D            E            F          G
 1 2007/5/10  No.     NAME      実施日    予定日   実施日   予定日
 2            002   かきくけこ 2007/5/2     2007/5/10   2007/8/11   2007/8/10

 B2=INDEX(Sheet1!A$1:A$3,MAX(Sheet1!$G$2:$G$3))
 右(G2)までフィルコピー(Sheet1のA列の3行目、フィルコピーすることによりC2はB列の3行目、D2はC列の3行目・・・)

 VLOOKUPについて
http://www.excel.studio-kazu.jp/lib/e1tw/e1tw.html
(gon-2)


DONさん、gon-2さん、ありがとうございます。
 gon-2さんの式をコピーさせてもらいました。
 G列は行番号が出るということでいいのでしょうか。2,0,0,0,6,0,0,9,10(
←タテに)というように出ました。
 シート2に式を入れたら、当てはまる行が複数あったのですが、一番最後の行しか出ませんでした。
複数の行を抽出する事はできないのでしょうか?
(じゅん)

 複数行にまたがって同じ年月日があるということですね。

 G2=IF(ISERROR(MATCH(Sheet2!$A$1,A2:F2,0)),"",ROW())

 B2=IF(COUNT(Sheet1!$G$2:$G$100<ROW(A1),"",INDEX(Sheet1!A$1:A$100,SMALL(Sheet1!$G$2:$G$100,ROW(A1)))

 下へフィルコピーしてください。範囲は100行としてありますが、必要範囲を指定してください。(gon-2)


=IF(COUNT(Sheet1!$AF$2:$AF$50<ROW(A1),"",index(Sheet1!A$1:A$50,SMALL(Sheet1!$AF$2:$AF$50,ROW(A1)))))

 上のように入力しましたが、「正しくありません」と出てしまいましたぁ。

(じゅん)


 流れをぶった切って申し訳ないのですが・・・
 データの抽出ならフィルタを利用するのはどうなんでしょう?
 難しい関数を考える必要がないので便利だと思うのですけど、人気がない?

 Sheet2のA2は空欄のまま、A3に抽出条件:=COUNTIF(Sheet1!C2:F2,Sheet2!A1)>=1を入力
	A
1	2007/5/10
2	
3	FALSE

 Sheet2のC1を選択(何もない離れたセルを選択)して、データ→フィルタ→フィルタオプションの設定を選択します。
 リスト範囲:Sheet1!$A$1:$F$7
 検索条件範囲:Sheet2!$A$2:$A$3
 指定した範囲にチェックを入れ
 抽出範囲:Sheet2!$B$1
 OKとするのですけど・・・ (Hatch)

 =IF(COUNT(Sheet1!$AF$2:$AF$50<ROW(A1),"",index(Sheet1!A$1:A$50,SMALL(Sheet1! $AF$2:$AF$50,ROW(A1)))))
 最後の ) が一つ多いですね。最も私のレスは一つ足りませんでしたけど・・・

 「正しくありません」表示の前に「入力した数式にエラーがみつかりました。次の方法があります」と表示されませんでしたか?
 表示されるなら[はい]をクリックしてください。 動作の検証はしてあります。

 Hatchさんへ フイルタでいいと思います。  
 当初がVLOOKUPに関する質問でしたので、つい・・・(gon-2)


Hatchさん、有り難うございます
「このコマンドにはデータソースが2行以上必要です」というメッセージがでてしまいました。
なぜでしょう。。うまくできません(泣)

gon-2さん、「入力した数式はただしくありません」とでてます。OKをクリックしたら
関数の引数というのが出てきました。
値2の””が#VALUE!となっています。
)も4つだと数が合いません、と出てしまいます。5つにしたら、「入力した・・・」というメッセージが出てきました。

(じゅん)


 AF列に 0 は表示されてませんよね。
 AF2=IF(ISERROR(MATCH(Sheet2!$A$1,A2:F2,0)),"",ROW())

 AF列に表示される数字(検索される日付の行番号)はSheet1の表にある行番号と一致してますか。。
 (gon-2)


0は表示されていません。
行番号とAF列の数字は一致しています。(じゅん)


 =IF(COUNT(Sheet1!$G$2:$G$100<ROW(A1),"",INDEX(Sheet1!A$1:A$100,SMALL(Sheet1!$G$2:$G$100,ROW(A1)))
 でエラーが出るのは、
 COUNT関数の ) が抜けてるからでしょう。
 =IF(COUNT(Sheet1!$G$2:$G$100)<ROW(A1),"",INDEX(Sheet1!A$1:A$100,SMALL(Sheet1!$G$2:$G$100,ROW(A1))))
 とすればいいのでは?
 (kkk)



 =IF(COUNT(Sheet1!$AF$2:$AF$50<ROW(A1),"",index(Sheet1!A$1:A$50,SMALL(Sheet1!$AF$2:$AF$50,ROW(A1))))

 COUNT(Sheet1!$AF$2:$AF$50) の ) が抜けていました。
 大変失礼いたしました。(gon-2)


kkkさん、gonー2さん有り難うございます。
できました!!
とても丁寧に教えていただき本当に有り難うございました。
 hatchさん、教えてくださったとおりに入力したら、「問題が発生したためエクセルを終了します」と言うメッセージがでてしまいました。
今回は違う方法でできたので、別の機会に再チャレンジしてみます。
(じゅん)

 > 別の機会に再チャレンジしてみます。
 難しい関数を考えなくてよいし、ファイルも重くなりにくいと思いますので、
 暇な時にでも試してみてください。  (Hatch)


はい!試してみます。まだまだ知らないエクセルの便利な機能がたくさんあるのですね。ありがとうございました。(じゅん)

コメント返信:

[ 一覧(最新更新順) ]


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