数式は正しく構成されています。予期しない結果は、Excelがさまざまなタイプのデータを保存する方法が原因です。
ワークブックレベルの設定に基づいて、Excelが日付の保存に使用する同様のシステムが2つあります。
1900年の日付システム
1900年の日付システムでは、サポートされる最初の日は1900年1月1日です。日付を入力すると、日付は1900年1月1日からの経過日数を表すシリアル番号に変換されます。 1998年7月5日を入力すると、Excelは日付をシリアル番号35981に変換します。
既定では、Microsoft Excel for Windowsは1900年の日付システムを使用します。1900年の日付システムにより、Excelと、Lotus 1-2-3など、MS-DOSまたはMicrosoft Windowsで実行するように設計された他のスプレッドシートプログラムとの互換性が向上します。
1904年の日付システム
1904年の日付システムでは、サポートされる最初の日は1904年1月1日です。日付を入力すると、日付は1904年1月1日からの経過日数を表すシリアル番号に変換されます。 1998年7月5日を入力すると、Excelは日付をシリアル番号34519に変換します。
既定では、Macintosh用Microsoft Excelは1904年の日付システムを使用します。初期のMacintoshコンピューターの設計のため、1904年1月1日より前の日付はサポートされていませんでした。この設計は、1900年がle年ではないという事実に関連する問題を防ぐことを目的としています。1900年の日付システムに切り替えると、Excel for Macintoshは1900年1月1日という早い日付をサポートします。
これらの抜粋は、https://support.microsoft.com/en-us/help/214330/differences-between-the-1900-and-the-1904-date-system-in-excelから取得されています。
シリアル番号は、1900年1月1日から1900年2月29日までの架空の日付を含む、単純な現在の日付数のカウントです。ただし、DAY関数は、さらにデータ型変換関数と考えることができます。これは、かかる日付シリアル番号を入力として戻る整数を出力として。あなたの例では、18を日付シリアルを表していると考え、1900年1月1日から18日先をカウントすると、1900年1月18日になります。
フロントエンドの簡単な修正は、セルの形式をNumberやGeneralなどの他の形式に変更することです。これにより、Excelは日付シリアルとして解釈するのではなく、整数として表示するようになります。バックエンドでは、すべてが順調です。整数の結果は、他の式で使用でき、正しく動作します。
例として、今月の15日が過ぎたかどうかを示す条件式を作成したいとしましょう。以下を使用してこれを行うことができます。
=IF(DAY(TODAY())>15,"The 15th has passed","It is not yet the 15th")
日付シリアルを使用して同じ結果を達成するのははるかに困難になるため、整数を返すDAY関数は、Excelの一般的なユースケースのコンテキスト内でより有用になります。