[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『データの抽出』(じゅん)
シート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)
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)
上のように入力しましたが、「正しくありません」と出てしまいましたぁ。
(じゅん)
流れをぶった切って申し訳ないのですが・・・ データの抽出ならフィルタを利用するのはどうなんでしょう? 難しい関数を考える必要がないので便利だと思うのですけど、人気がない?
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)
gon-2さん、「入力した数式はただしくありません」とでてます。OKをクリックしたら
関数の引数というのが出てきました。
値2の””が#VALUE!となっています。
)も4つだと数が合いません、と出てしまいます。5つにしたら、「入力した・・・」というメッセージが出てきました。
(じゅん)
AF列に 0 は表示されてませんよね。 AF2=IF(ISERROR(MATCH(Sheet2!$A$1,A2:F2,0)),"",ROW())
AF列に表示される数字(検索される日付の行番号)はSheet1の表にある行番号と一致してますか。。 (gon-2)
=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)
hatchさん、教えてくださったとおりに入力したら、「問題が発生したためエクセルを終了します」と言うメッセージがでてしまいました。 今回は違う方法でできたので、別の機会に再チャレンジしてみます。 (じゅん)
> 別の機会に再チャレンジしてみます。 難しい関数を考えなくてよいし、ファイルも重くなりにくいと思いますので、 暇な時にでも試してみてください。 (Hatch)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.