• ベストアンサー

Excelで「日付・時刻」の複数条件のデータを抽出するには?

Sheet1に以下のような表があります。 日付__開始__終 了__行き先  7/1__09:00__11:00__江別 7/1__13:00__14:00__岩見沢 7/1__16:00__18:00__旭川 7/2__09:00__12:00__小樽 7/2__13:30__16:00__余市 さて、ここでSheet2のA1に「7/1」と入力すると、 A2からA5に「09:00_18:00_江別_旭川」と出力されます。 また、Sheet2のB1に「7/2」と入力すると、 B2からB5に「09:00_1600_小樽_余市」というように 出力させるようにしたいのです。 つまり、日付別に「最初の開始時刻」と「最後の終了時刻」について それぞれの行き先を求めたいのです。 1日あたりの行き先の件数は2件の日も7件の日もあり、特に 決まっていません。 以上のような出力をするには、どうすれば良いでしょうか? 複数の条件(日付・時刻)を満たす時の結果を抽出する方法が分かりません。 できれば、ピボットテーブルのような難しい操作をせずに求めたいです。 vlookup関数・small関数・large関数あたりが関係ありそうな気がしますが、 アドバイスをよろしくお願いいたします。

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

  • ベストアンサー
  • wisemac21
  • ベストアンサー率39% (171/429)
回答No.5

>Sheet2のA1に「7/1」と入力すると A2=INDEX(Sheet1!$B:$B,MATCH(A1,Sheet1!$A:$A,FALSE)) A3=INDEX(Sheet1!$C:$C,MATCH(A1,Sheet1!$A:$A)) A4=INDEX(Sheet1!$D:$D,MATCH(A1,Sheet1!$A:$A,FALSE)) A5=INDEX(Sheet1!$D:$D,MATCH(A1,Sheet1!$A:$A)) 1行目の日付を入力している列まで式を右へコピー

その他の回答 (5)

  • sige1701
  • ベストアンサー率28% (74/260)
回答No.6

他の回答者の回答で解決すると思いますが、参考までに A2=INDEX(Sheet1!$B:$D,MATCH(A$1,Sheet1!$A:$A,MOD(ROW(),2)),MIN(ROW(A1),3)) 日付・時刻が昇順に並んでいることが条件です 日付が並んでいない場合は別な方法となります。

noname#204879
noname#204879
回答No.4

Sheet2 において、 A2: {=MIN(IF((Sheet1!$A$2:A$100=A$1)*(Sheet1!$B$2:$B$100),(Sheet1!$A$2:$A$100=A$1)*(Sheet1!$B$2:$B$100),""))} A3: {=MAX((Sheet1!$A$2:$A$100=A$1)*(Sheet1!$C$2:$C$100))} A4: =INDEX(Sheet1!$D$2:$D$100,SUMPRODUCT((Sheet1!$A$2:$A$100=A$1)*(Sheet1!$B$2:$B$100=A2)*ROW($A$2:$A$100))-1) A5: =INDEX(Sheet1!$D$2:$D$100,SUMPRODUCT((Sheet1!$A$2:$A$100=A$1)*(Sheet1!$C$2:$C$100=A$3)*ROW($A$2:$A$100))-1) (上2つの式は配列数式)

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

毎日のように質問が出る「抜き出し問題」だ。過去質問を調べること。 (1)毎日のようにこのコーナーで私は関数では抜き出しは難しいといっている。 (2)複数の条件(日付・時刻)を満たす・・ 質問のケース条件は複数ではなく日付ではないかと思う。 7/2__09:00__12:00__小樽 7/2__13:30__16:00__余市 と抜き出すことをまず考えるべきだ。 これでも関数では難しい。作業列を使ってimogasi方式(Googleで照会のこと)やその他の方法で、やっとできるというものだ。 (3)それに本件は時刻を09:00_18:00に縮約するのか? >江別_旭川」と出力されます。 「江別_旭川」と出力したい」と書くべきだ。 >江別_旭川もこのとおりか、江別、岩見沢、旭川の三行になってもよいのか。こちらも縮約するとなるとさらに難しい。 ーー また Sheet2の条件を入れるところがA1,B1・・と異動する(複数セルある)かつ結果を出す列ももA,B列・・と変わるのでimogasi方式では歯が立たない。 ーーー 結論として 上記imogasi方式の質問回答例にある作業列を使わない関数式を使うか (理解が難しい) VBAでも使わないと出来ないと思う。VBAは経験無いだろうな。 ーー Sheet1のA1セルだけに、その場その場で1つの条件を入れることで、いつもSheet2のA列に結果を出す、ようなことに我慢すべきかと思う。 それにデーターフィルターフィルタオプションの設定などを勉強したらと思う。 ーー そうしないと日付別に縦に該当データを並べる問題になってしまう。

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.2

日付が昇順に並んでいるという条件で B2 =INDEX(Sheet1!B:B,MATCH(B2,Sheet1!A:A,FALSE)) B3 =INDEX(Sheet1!C:C,MATCH(B2,Sheet1!A:A)) B4 =INDEX(Sheet1!D:D,MATCH(B2,Sheet1!A:A,FALSE)) B5 =INDEX(Sheet1!D:D,MATCH(B2,Sheet1!A:A)) ではいかがでしょうか。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

日付・時刻が昇順に並んでいるなら B2=VLOOKUP($A1,Sheet1!$A$2:$D$100,2,FALSE) B3=INDEX(Sheet1!$C$2:$C$100,MATCH($A1+1,Sheet1!$A$2:$A$100,1),1) B4=VLOOKUP($A1,Sheet1!$A$2:$D$100,4,FALSE) B3=INDEX(Sheet1!$D$2:$D$100,MATCH($A1+1,Sheet1!$A$2:$A$100,1),1)

関連するQ&A