%20%E9%96%A2%E6%95%B0%E3%81%8C%E8%87%AA%E5%8B%95%E7%9A%84%E3%81%AB%E3%82%BB%E3%83%AB%E3%81%AB%E6%8C%BF%E5%85%A5%E3%81%95%E3%82%8C%E3%82%8B%E6%96%B9%E6%B3%95%20.png)
答え1
新しい答え
再計算されないタイムスタンプが必要な場合は、循環式これにより、基本的にセルは自身のコンテンツに基づいて機能を実行できるようになります。
この機能を有効にするには、[ファイル] > [オプション] > [数式] に移動して にチェックマークを付ける必要がありますEnable iterative calculation
。反復回数を に変更します1
。[OK] を押してシートを保存します。
=IF(A1<>"",IF(B1="",NOW(),B1),"")
説明:
1 つ目はIF
、元の回答のものと似ています。 がA1
空白かどうかをチェックします。<>
は を意味する論理演算子ですnot equal to
。 2 つ目はIF
自身をチェックし、 にコンテンツが入力されている場合は実行されますA1
。 がB1
空の場合は現在の日付と時刻を入力し、それ以外の場合は既存のコンテンツ (元のタイムスタンプ) を出力します。
オリジナルの回答
B1 でこれを試すことができます:
=IF(ISBLANK(A1),"",NOW())
説明:
ISBLANK
は、ターゲット セルに入力があるかどうかをテストする論理テストです。 または を返しますTRUE
。FALSE
はIF
、ターゲット セルが空白の場合は空の文字列を出力するように構成されています。 に入力がある場合は、A1
現在の時刻と日付を出力します。
シートが再計算されるたびに、出力される値がNOW()
現在の時刻に変更されることに注意してください。
参考文献:
答え2
すべてに VBA を使用するのが常に賢明というわけではありませんが、特に行が最初に入力されたときだけでなく、変更されたときにも追跡したい場合は、これが良い候補です。タイムスタンプ列のあるシートのコードに次のコードを挿入します。
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Dim intersection As Range
' Change A:A,C:E to whatever range you want to watch.
Set intersection = Application.Intersect(Target, Me.Range("A:A,C:E"))
If Not intersection Is Nothing Then
Dim r As Range
For Each r In intersection.Rows
' Change B1 to whichever column is the timestamp.
r.EntireRow.Range("B1").Value = Now
Next
End If
Application.EnableEvents = True
End Sub
この例では、列 A、C、D、E の変更が監視され、変更が発生すると、現在の日付と時刻が同じ行の列 B に挿入されます。