キャシーは、当月の任意の日付を前月の最終日に変更する数式を必要としています。彼女はまた、選択したセルの範囲内の日付に対してこれを実行できるVBAマクロがあると便利だと述べています。

実際には、希望の日付を導き出すために使用できるいくつかの異なる公式のアプローチがあります。これらの2つは、最短で最も使いやすいものです:

=A1-DAY(A1)

=EOMONTH(A1,-1)

最初の日は、当月の「日0」が常に前月の最終日と見なされるため、機能します。したがって、セルA1の日付が9/25/20の場合、その日から25(DAY値)を引くと、日付は9/0/20、つまり8/31/20になります。

2番目の式は、EOMONTH関数の2番目のパラメーターが含まれているために機能します。このパラメーターは、月末を計算する必要がある過去(負)または将来(正)の月数を示すために使用されます。

いずれの場合も、数式を含むセルを日付としてフォーマットする必要がある場合があります。そうでない場合は、Excelが日付の計算に使用する基になるシリアル番号が表示される可能性があります。

選択した範囲の日付を前月の最終日に実際に変換するマクロが必要な場合は、次の方法でうまくいきます。

Sub LastDayPreviousMonth()

Dim rCell As Range

For Each rCell In Selection         If IsDate(rCell) And Not rCell.HasFormula Then             rCell.Value = WorksheetFunction.EoMonth(rCell.Value, -1)

End If     Next rCell End Sub

マクロは、選択した範囲の各セルをステップスルーし、日付が含まれていて数式ではないかどうかを確認します。 (つまり、セル内の日付が数式の結果である場合、数式は変更されません。)

次に、前述のように、EOMONTH関数を使用して目的の日付を計算します。

マクロアプローチはテキストの日付も変換することに注意してください。たとえば、セルにテキストとして日付「6/15/20」が含まれている場合、

その後、マクロはそれを5/30/20に変更します。調整された日付がセルに戻されると、テキストではなく日付/時刻のシリアル番号として表示されます。

注:

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

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

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