Excel 中的时间戳具有非常具体的要求

Timestamp in Excel with very specific requirements

我需要一些有关 Excel vba 代码的帮助,它可以执行以下操作。我充其量只是初学者 VBA 程序员,我只需要一些东西来处理我正在处理的电子表格。

我知道有无数关于时间戳代码的问题和答案,我已经阅读了很多,但我找不到适合我需要的。我花了几个小时寻找,所以这就是我问的原因。这是我需要的:

  1. 当 A 列中的单元格发生更改且 B 列中的相应单元格为空白时,用当前日期在 B 列中的单元格上添加日期标记。

  2. 随后,如果更改了 A 列中的单元格并且 B 列中的相应单元格不为空(因为它已经包含了先前更改 A 列的日期戳),则日期戳B 列单元格中的内容不应更改。这包括是否将 A 列中的单元格替换为相同的值。

  3. 如果 A 列中的单元格被清除,无论是单独清除还是作为多单元格的一部分 select 并清除内容,B 列中单元格中的日期戳不应更改或删除。

  4. 只有在B列单元格中手动清除日期戳后,如果A列中相应单元格的值再次更改(基本上是重置)。

  5. 第一行是标签,所以不要对第一行的单元格做任何操作。

希望我已经说得够清楚了。如果没有,请告诉我。在此先感谢您的所有回复,如果在某处可用但我找不到它,我很抱歉。

试试下面的代码。请给我们一些反馈!

由于您可能同时对多个单元格应用更改(例如,按 Ctrl+Enter),我使用了一个循环来浏览每个被更改的单元格。

Private Sub Worksheet_Change(ByVal Target As Range)
    For Each cell In Target.Cells
        If cell.Row > 1 And cell.Column = 1 Then
            If cell.Offset(0, 1).Value = "" Then
                cell.Offset(0, 1).Value = Now()
            End If
        End If
    Next
End Sub