• ベストアンサー

excel:時間処理

Excelのある列に日付け時間データが入っています。 このデータを判定して時間のみが、21時から5時までに入っていればその右のセルに1を、そうでなければ0を書き出すにはどんな式を書けばいいですか。 例  項目  開始時間 H  2006/1/19 9:53 G  2006/1/19 1:53 J  2006/1/10 23:53 K  2006/1/4 4:05

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

  • ベストアンサー
noname#123709
noname#123709
回答No.1

列が異なりますが、下記のような感じでどうですか? =IF(OR(HOUR(A2)<=5,HOUR(A2)>=21),1,0)

その他の回答 (2)

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.3

で、工夫した結果がこれです。 =IF(OR(HOUR(A1)<5,HOUR(A1)>=21,ABS((A1-INT(A1))*24-5)<0.0002),1,0) この式の意味は HOUR(A1)<5 ⇒「時」が0~4 または HOUR(A1)>=21 ⇒「時」が21~23 または A1-INT(A1) ⇒日付を除いた部分 (A1-INT(A1))*24 ⇒を時間単位(「時」が整数、「分秒」が小数)にして ABS((A1-INT(A1))*24-5) ⇒5時からの差を求めて ABS((A1-INT(A1))*24-5)<0.0002 ⇒差が1秒未満だったら5時丁度 だったら1に、違ったら0になる。となっています。 5時ちょうどか判定するのに (A1-INT(A1))*24=5 とか (A1-INT(A1))=5/24 とか (A1-INT(A1))=0.20833333 とかの式を使うと、数値誤差により正しく判定出来ません。 3時、6時、9時、12時、15時など、時間を表す小数部分が0.125、0.25、0.375、0.5のように誤差の出ない数なら、単純な判定で可能なのですが…。

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.2

No.1さん、惜しい。 それだと、5:59:59(6時ちょうど一歩手前)までになってしまいます。 ですので、4:59:59(5時ちょうど一歩手前)までにしないと。 =IF(OR(HOUR(A1)<5,HOUR(A1)>=21),1,0) 5時ピッタリも「1」に含めたいなら、もう少し工夫が要ります。

関連するQ&A