- ベストアンサー
エクセル 検索値より大きくて最小の数を検索結果として表示
どうしてもわからないので教えて頂けないでしょうか。 質問:エクセルで、検索値より大きくて最小の数を検索結果としたい場合。 作成したい内容:電車とバスの乗り継ぎ表 表A:電車の時刻表 表B:バスの時刻表 ○○駅(着時間) ○○バス停 16:45 15:55 17:15 16:47 17:45 17:18 表Aの電車の各着時間の横に、表Bより乗り継 ぎ可能なバスの時刻を表示させたい。例えば、電 車の時刻16:45の場合は表Bより16:47の 時刻が返されるように。 VLOOKで検索の型をTRUEにすると検索値 未満で最大の数を検索結果として表示しますが、その 逆を行いたいと思います。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは MATCH()とINDEX()の組み合わせで可能です ---Sheet1--------------------------------------- A 1 バスの時刻表 2 ○○バス停 3 15:55 4 16:47 5 17:18 : 50 ---Sheet2--------------------------------------- A B 1 電車の時刻表 2 ○○駅(着時間) 3 16:45 式 4 17:15 ↓ 5 17:45 ↓ : 50 式 =INDEX(Sheet1!$A$3:$A$50,MATCH(A3+■,Sheet1!$A$3:$A$50,1)+1) ■部分には乗り換えに要する時間 (正確には丁度の時間がある場合も次の時間を表示 してしまうので不都合な場合 ■を乗り換えに 要する時間-"0:0:30" にしておけばよいと思い ます) 合致する時刻がない場合の処理の1例 =IF(ISERR(式),"翌日",式)
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
(1)配列数式と言うものを使う (2)やや一般化する で下記の回答を上げます。 (1)データ例 A1:A3とB1:B8に 16:45 15:55 17:15 16:46 17:45 16:47 17:16 17:18 17:35 17:46 17:48 (2)C1に対象となるセルを示すA1やA2やA3を 入れる。 (3)D1に式 =SMALL(IF(B1:B8>INDIRECT(C1),B1:B8,""),1) と入れて、カーソルを数式バーの最後部に置き、CTRLとShiftキーを左手指で押しながら、右手でEnterキーを押す。 結果は式は{=SMALL(IF(B1:B8>INDIRECT(C1),B1:B8,""),1)} となり、結果は17:46になります。 C1にA2やA1を入れて見てください。 またC1などは書式は時刻にしておいて下さい。 同時刻の場合は上記では次ぎの列車を取ります。 IF文の=を>=に変えると同時刻はそれを拾います。 配列数式が珍しければ、WEBで「配列数式」で照会してください。
お礼
ありがとうございます。今回は最初にお返事を頂いた方法で上手くいきました。配列関数はほとんどしらないので、今回教えて頂いた内容などを見て勉強します。
- yuusukekyouju
- ベストアンサー率22% (21/94)
>検索値より大きくて最小の数を検索結果としたい場合。 これは、VLOOKUPで検索の型をTRUEでそのまま出来ます。 VLOOKUPの範囲として以下のようにしてください。 バスの時刻表 A列 B列 15:55 16:47 16:47 17:18 17:18 B列はA列の数字1行上にずらせばよいと思います。 最終のところは該当なしとでもいれればよいのでは =VLOOKUP(検索値,検索範囲,2,TRUE)
お礼
ありがとうございます。
お礼
ありがとうございます。しかも乗り換え時間についてまで考慮して頂きました。一つ一つの関数は知っていても複数の関数を組み合わせなど上手くできずまだまだ使いこなせていないなあと感じています。