ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

QNo.4155949 Excelで「日付・時刻」の複数条件のデータを抽出するには?
質問者:takeshi95 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関数あたりが関係ありそうな気がしますが、
アドバイスをよろしくお願いいたします。
困り度:
  • 困っています
質問投稿日時:
08/07/06 18:04
この質問に対する回答は締め切られました。

回答

ANo.6 他の回答者の回答で解決すると思いますが、参考までに
A2=INDEX(Sheet1!$B:$D,MATCH(A$1,Sheet1!$A:$A,MOD(ROW(),2)),MIN(ROW(A1),3))

日付・時刻が昇順に並んでいることが条件です
日付が並んでいない場合は別な方法となります。
回答者:sige1701
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:
08/07/07 09:22
この回答へのお礼この回答にお礼をつける(質問者のみ)

回答良回答20pt

ANo.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行目の日付を入力している列まで式を右へコピー
回答者:wisemac21
種類:回答
どんな人:経験者
自信:自信あり
回答日時:
08/07/06 19:25
この回答へのお礼この回答にお礼をつける(質問者のみ)

回答

ANo.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つの式は配列数式)
回答者:mike_g
種類:回答
どんな人:経験者
自信:自信あり
回答日時:
08/07/06 19:19
この回答へのお礼この回答にお礼をつける(質問者のみ)

回答

ANo.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列に結果を出す、ようなことに我慢すべきかと思う。
それにデーターフィルターフィルタオプションの設定などを勉強したらと思う。
ーー
そうしないと日付別に縦に該当データを並べる問題になってしまう。
回答者:imogasi
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:
08/07/06 19:12
この回答へのお礼この回答にお礼をつける(質問者のみ)

回答良回答10pt

ANo.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))
ではいかがでしょうか。
回答者:hallo-2007
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:
08/07/06 19:05
この回答へのお礼この回答にお礼をつける(質問者のみ)

回答

ANo.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)
回答者:mshr1962
種類:回答
どんな人:一般人
自信:参考意見
回答日時:
08/07/06 18:57
この回答へのお礼この回答にお礼をつける(質問者のみ)