日付が他の日付の間にあるかどうかの判別(Microsoft Excel)
Johnaは、特定の日付が他の2つの日付の間にあるかどうかを判断する必要があります。たとえば、2018年11月8日が2018年8月1日から2019年7月31日までの間にあるかどうかを判断する必要がある場合があります。彼女は、この判断を下す式を見つけようとしています。
実際には、短いものから非常に長いものまで、さまざまな数式を使用できます。ただし、このヒントでは、より短い公式のアプローチに焦点を当てます。その前に、日付(および時刻)がExcelによって数値として内部的に保存されることを覚えておくとよいでしょう。日付の小数点の前の部分(数値の整数部分)は日付のシリアル番号であり、小数点の右側の部分は時刻です。
日付と時刻は数値として保存されるため、数値を単純に比較して、どちらが高いか低いか、および何かが高いか低いかを判断するのは比較的簡単な作業になります。たとえば、セルA1に開始日(2018年8月1日)があり、セルA2に終了日(2019年7月31日)があるとします。チェックインする日付をセルD1に配置し、次の数式を使用できます。
=IF(AND(D1>=A1,D1<=A2),"Yes","No")
数式は、D1の日付がA1以上でA2以下であるかどうかを確認します。これらの2つの条件が満たされた場合にのみ「はい」が返され、そうでない場合は「いいえ」が返されます。 (図1を参照)
図1.数値を比較して、どちらが高いか低いか、および高いものと低いものの間を判断します。
日付に時刻が含まれていると思われる場合は、時刻を表すシリアル番号の部分を削除して調整することをお勧めします。
=IF(AND(TRUNC(D1,0)>=TRUNC(A1,0),TRUNC(D1,0)<=TRUNC(A2,0)),"Yes","No")
実際にテキスト文字列を比較していて、認識されていないExcelの日付である場合は、DATEVALUE関数を使用して文字列を日付に変換する必要があります。
=IF(AND(DATEVALUE(D1)>=DATEVALUE(A1),DATEVALUE(D1)<=DATEVALUE(A2)),"Yes","No")
DATEVALUE関数を使用した結果は、次の図のようになります(図2を参照)
図2.DATEVALUE関数を使用して文字列を日付に変換するテキスト文字列の比較。
これまでのところ、各式は同じ基本式でした。それらの間の唯一の違いは、日付がセルに格納される方法の特性を補正するための追加機能の追加です。日付が他の2つの日付の間にあるかどうかを判断するまったく異なる方法については、次の公式アプローチを使用できます。
=IF(D1=MEDIAN(D1,A1,A2),"Yes","No")
MEDIAN関数は3つの数値を使用して計算されるため、常に小さい数値と大きい数値の間にある数値を返します。これは、D1が実際に他の2つの間にある場合、常に返されることを意味します。 D1が他の2つの間にない場合、他の1つが返されます。
興味深いことに、3つの値が互いに隣接するようにデータを少し再編成した場合(たとえば、比較日をD1からA3に移動することにより)、3つの個別のセル参照を3つのセルの範囲に置き換えることができます。 、式をさらに短くします:
=IF(A3=MEDIAN(A1:A3),"Yes","No")
ANDアプローチにMEDIANアプローチを使用する利点は、範囲値(A1またはA2)のどちらが比較の開始日または終了日であるかを心配する必要がないことです。MEDIAN関数はそれをすべて分類します。 (図3を参照)
図3.MEDIAN関数を使用した値の比較。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(12742)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice365のExcelに適用されます。