• ベストアンサー

Excel関数についての質問です。

A      B    C    D   E 10/31 123456 789456 東京 5,000 10/31 569884 123456 大阪 8,000 11/1  561854 654779 神奈川 6,000 11/1  545425 569846 千葉 5,000 11/1  268552 123465 埼玉 9,000 11/2  863341 128965 青森 7,500 このような表があったとします。また、データを抽出したい別のシートに、 =today() で今日の日付を表示しておきます そこで =today() に一致する日付のD列とE列のデータを抜き出したいのです。(例えば、今日が10/31だったとしたら、下記のように東京5,000、また次の行に大阪8,000となるように。) 10/31 東京 5,000 10/31 大阪 8,000 このようなことは、可能でしょうか? どうぞ教えてください。よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • shiotan99
  • ベストアンサー率68% (140/203)
回答No.1

こんにちは~ ・データシートが Sheet1 ・抽出シートが Sheet2 ・抽出シートの A1セルに =TODAY() ・抽出シートの A2セル以下に該当データを抽出 ■作業列を使う方法です。 作業列はどこでもかまいませんが、ここでは仮に Sheet1 の F列を作業列とします。 ★ Sheet1 の F1セルに( データが 1行目から始まっているとして ) =IF(A1="","",IF(A1=Sheet2!$A$1,ROW(),"")) と入れて、データ最終行までフィルコピー ( Sheet2!$A$1 は =TODAY() が入っているセルです ) 今後もデータが増えるのなら、予想される最大行までコピーしておいてください。 ★ Sheet2 の A2セルに =IF(COUNT(Sheet1!$F:$F)<ROW(A1),"",INDEX(Sheet1!D:D,SMALL(Sheet1!$F:$F,ROW(A1)))) と入れて、右の B2セルにフィルコピー そのまま該当データの予想最大数まで下にフィルコピー 該当データが最大 10件だと思えば、11行目までフィルコピーしてください。 ◆ 作業列が F列以外なら $F:$F( 2ヶ所 )をその列記号に変更してください。 ( 絶対参照にすること ) ◆ ROW(A1) の A1 は、数式を入力する先頭のセルがどのセルかに関係なく A1のままにしておいてください。(← 最初に数式を入れるセルだけです。あとは右に下にコピーするだけで OKです ) ◆ 作業列が目障りなら非表示にしてください。

m_m_m_m_m
質問者

お礼

ありがとうございました。 大変助かりました。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

例データ Sheet1の A2:E8に A列  B列  C列   D列   E列  F列 2005/10/31 10月31日 123456 789456 東京 5,000 1 10月31日 569884 123456 大阪 8,000 2 11月1日 561854 654779 神奈川 6,000 11月1日 545425 569846 千葉 5,000 11月1日 268552 123465 埼玉 9,000 11月2日 863341 128965 青森 7,500 10月31日 123454 234345 大分 8,000 3 C1に=TODAY()で日付が入っています。 F2に=IF(A2=$C$1,MAX($F$1:F1)+1,"") と式を入れて、F8まで式を複写します。 結果は上記F列に、条件にあった行に1からの連番が振られます。 Sheet2に行って A2に=INDEX(Sheet1!$A$2:$E$8,MATCH(ROW()-1,Sheet1!$F$2:$F$8,0),COLUMN()) と入れてE列まで+ハンドルを引っ張る。 A2:E2を指定して+ハンドルをA4:E4まで引っ張る。 結果 2005/10/31 123456 789456 東京 5000 2005/10/31 569884 123456 大阪 8000 2005/10/31 123454 234345 大分 8000 BA列の書式は日付、B列、C列、E列は数値の書式にして置いてください。 B,C列が不要なら、非表示にするか、COLUMN()をやめて、最後の引数で列を指定して =INDEX(Sheet1!$A$2:$E$8,MATCH(ROW()-1,Sheet1!$F$2:$F$8,0),1) =INDEX(Sheet1!$A$2:$E$8,MATCH(ROW()-1,Sheet1!$F$2:$F$8,0),3) のようにして、式の複写は縦方向のみしてください。(imogasi方式) OKWAVEでimogasi方式で照会すればたくさん類似例回答があります。

m_m_m_m_m
質問者

お礼

ありがとうございました。 大変わかりやすかったです。

回答No.2

フィルタオプションを使う手があります。 まず項目名を表の上につけてください。 仮にABCを項目名としますね。 1行以上空けて下のセルに、 項目名をコピーします。 そして、抽出したいデータをその下のセルに入力してください。 A      B    C    D   E =Today() こんな感じです。 そして、データ→フィルタ→フィルタオプションで、 抽出先を指定した範囲にチェックします。 あとはリスト範囲に表をタイトルごと。 検索条件範囲は↑のようにタイトルごと。 抽出範囲は抽出したい行にしてください。 別シートが良ければ抽出後コピーすればOKです。

m_m_m_m_m
質問者

お礼

ありがとうございました。 早速試してみます。

関連するQ&A