Donnaは、ディスパッチセンターで1日を通して発生したアクティビティのログを保持する必要があります。ラジオで電話がかかってきたら、誰が、何を、なぜかなどを記録する必要があります。また、電話がかかってきた時刻(24時間形式)も記録する必要があります。現在、ドナはこれらすべてを紙に記録しています。彼女は、入力できるワークシートを作成し、その行の隣のセルにテキストを入力するとすぐにタイムスタンプが自動的に入力されるようにしたいと考えています。隣のセルが空の場合、彼女はタイムスタンプセルを空白にしたいと考えています。このようにして、彼女は時計をチェックして時間を書き留める時間を節約できます。

この問題に取り組む際に、タイムスタンプを列Aに入れ、「誰が、何を、なぜ」やその他の情報を列Bから入力するとします。これを行う最も簡単な方法は次のとおりです。現在の時刻を入力するには、Excelの組み込みショートカットを使用します。Shift+ Ctrl +を押します。 (これはセミコロンです)。セルが24時間形式で時刻を表示するようにフォーマットされている場合は、現在の時刻が希望どおりに表示されます。

より自動化されたアプローチが必要な場合は、次のような単純な式を列Aで使用できると考えるかもしれません。

=IF(B2<>"", NOW(), "")

列Bの対応するセルに何かが含まれている場合、これは列Aに時間を入力しますが、NOW関数がどのように機能するかにより、満足のいく結果は得られません。関数は常に現在の時刻を返すことに注意してください。したがって、ワークシートが再計算されるたびに、セルB2の内容がチェックされます。そこに何かがある場合は、NOW関数が呼び出され、再計算の現在の時刻が返されます。

これは、この数式を含む列Aのセルに表示される時間が常に変化することを意味します。本当のタイムスタンプにはなりません。

ただし、次の方法で、列Aの数式をもう少し複雑にすることができます。

=IF(B2<>"", IF(A2="",NOW(),A2), "")

これを初めて入力すると、数式が循環しているため、エラーが発生する可能性があります。つまり、数式は数式が配置されているセルを参照します。 (この場合、数式はセルA2に入り、セルA2も参照します。)この数式を正しく機能させるには、次の手順を実行する必要があります。

。 [Excelのオプション]ダイアログボックスを表示します。 (Excel 2007では、[Office]ボタンをクリックし、[Excelオプション]をクリックします。Excel2010以降のバージョンでは、リボンの[ファイル]タブを表示し、[オプション]をクリックします。)

。画面の左側にある[数式]をクリックします。 (図1を参照)

。 [反復計算を有効にする]チェックボックスがオンになっていることを確認します。

。 [OK]をクリックします。

これで、セルB2に何かを入れると、セルA2に時間が自動的に入力されます。ただし、セルA2が以前に空白だった場合にのみ、時間が表示されます。含まれていなかった場合(つまり、すでに時間が含まれている場合)、セルA2の現在の内容はそのまま残ります。

(反復計算をオンにすることによって)循環参照を許可したくない場合は、マクロを使用するのが最善の方法です。

Worksheet_Changeイベントを使用すると、列Bに何かが入力されるたびに、列Aに時間を自動的に入力できます。

Private Sub Worksheet_Change(ByVal Target As Range)

Dim rInt As Range     Dim rCell As Range     Dim tCell As Range

Set rInt = Intersect(Target, Range("B:B"))

If Not rInt Is Nothing Then         For Each rCell In rInt             Set tCell = rCell.Offset(0, -1)

If IsEmpty(tCell) Then                 tCell = Now                 tCell.NumberFormat = "mmm d, yyyy hh:mm"

End If         Next     End If End Sub

マクロを設定するには、[ワークシート]タブを右クリックして、[コードの表示]を選択します。次に、表示されるコードウィンドウにマクロを配置できます。 (これにより、マクロがThisWorksheetモジュールに配置されます。これは、ワークシート内の何かが変更されるたびに実行されるイベントハンドラーであるため必要です。)

マクロは、列Bに実際に何かが入力されていることを確認します。入力されている場合、tCell変数は列Aの対応するセルに設定されます。そのセルにまだ何もない場合は、現在の日付と時刻がそこに配置されます。 。時間が必要な場合は、マクロの最も内側の部分を次のように変更します。

tCell = Time                 tCell.NumberFormat = "hh:mm"

注:

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

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

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