ワークシートに日付を入力する場合、Excelは日付の入力方法にかなりの自由度を提供します。緯度が認められる領域の1つは、1年を含めることです。 1年(2008年3月2日など)を含めると、それは素晴らしいことです。年(3/2など)を含めない場合、Excelは入力内容に現在の年を追加すると便利です。

ほとんどの場合、これは問題ではありません。ただし、昨年に「ラップアラウンド」する日付を入力する場合は問題になる可能性があります。たとえば、多くの人がワークシートに前月または2か月の日付を入力します。過去1〜2か月は現在の月と同じ年であるため、ほとんどの月ではこれは問題になりません。ただし、前年の11月と12月の日付を入力する場合は、1月と2月に問題が発生する可能性があります。

1つの解決策は、日付を入力するときに常に年を入力することです。データ入力中に1年を休み、Excelがそれをエントリに追加できるようにする方が間違いなく高速です。したがって、年の最初の2か月の日付を入力し、前年の年を追加する方法を考え出すとよいでしょう。

これを処理する1つの方法は、コンピューターのシステム日付を変更することです。

Windows内では、システム日付を1年デクリメントします。その後、入力するすべての日付が昨年に変更されます。ただし、システムの日付を元に戻すことを忘れない限り、これは他のプログラムにも影響を及ぼします。

また、1月の後半から2月の初めに、今年から日付の入力を開始すると、Excelによって昨年の年が自動的に追加され、データ入力が混乱する可能性があります。

より複雑なことを行うには、必然的にマクロを使用する必要があります。

ワークシートのコードウィンドウに追加する必要がある次の例について考えてみます。

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Cells.Count > 1 Then Exit Sub     If Target = "" Then Exit Sub     If Target.Column <> 1 Then Exit Sub

If DateValue(Target) > Date Then         Application.EnableEvents = False             Target = DateAdd("yyyy", -1, Target)

Application.EnableEvents = True     End If End Sub

このマクロは、ワークシートに変更があるたびに自動的に実行されます。行われている変更が列Aの単一のセルに対するものであり、入力されているのが今日の日付よりも大きい日付である場合、入力されているものから1年が差し引かれます。

これは、昨年または今年のこれまでの月のいずれかである日付を定期的に入力する場合に、うまく機能します。遠い将来の日付を具体的に追加した場合(たとえば、2016年3月2日に6/11/17と入力した場合)、年は1つ増えます。もちろん、マクロを変更して、入力された日付が1年の最後の2か月であるかどうか、および日付が実際に1年の最初の2か月で入力されているかどうかを確認してから、年。

注:

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

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

このヒント(3360)は、Microsoft Excel 97、2000、2002、および2003に適用されます。