ロバートは系図に取り組むのが大好きです。彼が古い墓地を見つけたとき、墓石に生年月日と死亡日が表示される代わりに、1つの日付と年齢だけが表示されることがあります。たとえば、「生まれ:1801年1月18日、81歳、11か月、17日で死亡」または「年齢:93歳、8か月、22日、1901年3月18日で死亡」などです。ロバートは、その日の不足している日付を計算する方法があるかどうか疑問に思っています。

これを行う方法はありますが、通常のワークシート関数を使用する必要はありません。 Excelには、日付を操作できるさまざまなワークシート関数が含まれていますが、Excelの「基準日」は1900年1月1日です。これは、すべての日付が計算される日付です。 (基準日は4年以内に1904に変更できます。この機能はMac上のExcelとの互換性のために提供されています。)これは、系図の目的で墓地にあるような古い日付が可能であることを意味します。 Excelで直接計算することはできません。

幸い、VBAにはこの制限はありません。これは、数学を実行するユーザー定義関数(マクロ)を簡単に作成できることを意味します。開始日(生年月日または死亡日)を配置することから始めます

セルB1内。次に、セルB2:B4に、開始日を調整する年、月、日数を入力します。したがって、B1に生年月日が含まれている場合、セルB2:B4は正である必要があります(開始日に追加する必要があります)。 B1に死亡日が含まれている場合、B2:B4は負である必要があります(開始日からそれらを減算する必要があります)。

次に、次のマクロを作成します。

Function FindDate(Start As Date, iYrs As Integer, _   iMths As Integer, iDays As Integer)



Application.Volatile     Dim D As Date

D = DateAdd("yyyy", iYrs, Start)

D = DateAdd("m", iMths, D)

D = DateAdd("d", iDays, D)



FindDate = Format(D, "m/d/yyyy")

End Function

計算された日付を表示するセルには、次の数式を入力できます。

=FindDate(B1,B2,B3,B4)

関数の結果は、指定した年、月、日で調整された開始日を表すフォーマットされた日付です。したがって、セルB1に1/18/1801が含まれ、セルB2に81が含まれ、セルB3に11が含まれ、セルB4に17が含まれる場合、関数は1/4/1883を返します。同様に、セルB1に3/18/1901が含まれ、セルB2に-93が含まれ、セルB3に-8が含まれ、セルB4に-22が含まれる場合、返される結果は6/26/1807になります。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

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

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

Excelの古いメニューインターフェイス用のこのヒントのバージョンは、 linkTombstone DateMathにあります。