ケンは、時刻に基づいてセルの内容を表示したいと考えています。たとえば、セルC1に(時刻の)NOW関数が含まれている場合、別のセルでその時刻をチェックする数式が必要です。午後5時より前の場合、数式はセルE1の内容を表示します。

時刻が午後5時以降の場合、数式はセルF1の内容を表示します。ケンは、時間を適切にチェックするためにIFステートメントを計算する方法がわかりません。

このタスクを実行するための鍵は、Excelが時刻と日付を内部的に保存する方法を覚えておくことです。 NOW関数を使用すると、現在の日付と時刻を表すシリアル番号が返されます。小数点の左側にあるシリアル番号はすべて日付であり、右側にあるものはすべて時刻です。比較を行う前に日付部分を取り除き、次にリンゴをリンゴと比較します(いわば)。

シリアル番号の日付部分を取り除く1つの方法は、次の方法です。

=IF(C1-INT(C1)<TIME(17,0,0),E1,F1)

TIME関数は、パラメーターで指定した時間、分、秒に関係なく、日付/時刻のシリアル番号の時間部分のみを返します。午後5時が必要なので、時間部分のみを17に設定する必要があります。

シリアル番号の日付部分を取り除く別の方法は、次のようにMOD関数を使用することです。

=IF(MOD(C1,1)<TIME(17,0,0),E1,F1)

この関数は、C1の値を1で割った後の余りを返します。

この場合の余りは、小数点の右側のすべて、つまり時間です。

ただし、おそらく比較を行う最も簡単な方法は、C1の値に関する計算を完全にスキップすることです。代わりに、次のようにHOUR関数を使用します。

=IF(HOUR(C1)<17,E1,F1)

HOUR関数は、セルC1の日付/時刻のシリアル番号を調べ、そのシリアル番号で表される時刻に応じて、0から23の値を返します。これを17(午後5時の値)と比較すると、数式で時刻に基づいて目的の値を表示できます。

ワークシートが更新されたときにのみ、NOW関数(数式がヒンジされる)が更新されることを覚えておくことが重要です。つまり、ワークシートが午後4時55分に更新され、午後5時10分まで再度更新されない場合、その15分間、数式はまだ認識していないため、「午後5時前」の値を返します。午後5時以降、再計算までです。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(12889)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice365のExcelに適用されます。