質問 |
||
| 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 |
|
| |
| この回答へのお礼 | この回答にお礼をつける(質問者のみ) |