• 締切済み

EXCELについて質問です。

EXCEL数式について質問です。 アドバイスお願い致します。 ※添付の表の参考をお願いいたします。 B列にOUT時間があります C列に発車時刻表(定義)があります。 D列にC列の発車時刻表の時間に対して反映させたいです。 ※反映については発車時刻よりも早く、一番近い時刻のにしたいです。 説明がわかりづらいかもしれませんがアドバイスよろしくお願い致します。

みんなの回答

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.3

発車時刻表の下(図ではC19セル)に時刻表の一番上の値「7:00」を入れておいてください。 D3セルに↓の式を入れて、Ctrl+Shift+Enterで配列数式として確定します。 =IF(OR(B3>MAX(C$3:C$18),B3<MIN(C$3:C$18)),MIN(C$3:C$18),MAX((B3>C$3:C$18)*(C$4:C$19))) 表示書式は時刻にしてください。 これですと、1:00を25:00と入力する必要がありません。

すると、全ての回答が全文表示されます。
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

C列の時刻は7:00,8:30の二つのセルを選択して下方にドラッグコピーして表示させているとしています。したがって1:00は25:00を意味していることになります。もしもドラッグ操作でなく1:00など次の日の午前1時を手で入力する場合には25:00のように入力します。その上で、D3セルには次の式を入力して下方にドラッグコピーします。 =IF(B3="","",IF(AND(B3>=(MAX(C:C)-"24:00"),B3<=MIN(C:C)),MIN(C:C),IF(B3<MIN(C:C),INDEX(C:C,MATCH(B3+"23:59:50",C:C,1)+1),INDEX(C:C,MATCH(B3-"0:00:10",C:C,1)+1)))) なお、C列にはシリアル値が表示されますのでC列を選択してから右クリックし「セルの書式設定」の「表示形式」の時刻から選択します。 なお、OUT時間から例えば乗車までに30分が必要とのことでしたらD3セルには次の式を入力して下方にドラッグコピーします。 =IF(B3="","",IF(AND(B3+"0:30">=(MAX(C:C)-"24:00"),B3+"0:30"<=MIN(C:C)),MIN(C:C),IF(B3+"0:30"<MIN(C:C),INDEX(C:C,MATCH(B3+"0:30"+"23:59:10",C:C,1)+1),INDEX(C:C,MATCH(B3+"0:30"-"0:00:10",C:C,1)+1))))

すると、全ての回答が全文表示されます。
  • m_and_dmp
  • ベストアンサー率54% (993/1828)
回答No.1

VLOOKUP 関数を使えばできると思いますのでトライしてください。 貴質問にマッチした解説が↓のサイトにあります。 http://www.eurus.dti.ne.jp/yoneyama/Excel/kansu/vlookup2.htm 解説で指摘しているとおり、VLOOKUP関数で、検索値よりも小さく、その中で最も大きい数字を拾ってくるには、時刻表の時間を昇順に並べる必要があります。しかし、貴質問で例として記述されている時刻表は、24時をすぎると、(当然)小さくなりますので、昇順という条件を満たしておりません。そこで、24時を過ぎた1時は、25:00と入力してください。表示形式が h:mm に指定されているなら、25:00 と入力しても 1:00 と表示されます。 ところで、発車時刻表の数値よりも早く、かつOUT時刻に一番近い(大きい)、ということですか? 貴質問では、OUT時刻が8:00, 時刻表が7:00, 8:30 ... 、反映された発車時刻が8:30となっていますが、・・・よりも早く、一番近いのは、7:00ではありませんか? VLOOKUP関数はなかなか思うように動かない(引数の指定の仕方がわるいだけのことですが)のですが、思い通りの答えが出たときは充足感を味わうことができます。頑張ってください。

すると、全ての回答が全文表示されます。

関連するQ&A