当用户在相邻单元格中input信息时,自动填充单元格中的date

我有一个电子表格,在这里人们可以input项目更新,然后input更新的date。 正在发生的事情是,人们忘记约会他们的笔记。 有没有办法让date单元格autopoplute当前/date的条目?

我假设如果函数会这样做?

如果在A列中input一个值,则此事件macros将在B列中放置date该macros应该安装在工作表代码区域中:

Private Sub Worksheet_Change(ByVal Target As Range) Dim A As Range, B As Range, Inte As Range, r As Range Set A = Range("A:A") Set Inte = Intersect(A, Target) If Inte Is Nothing Then Exit Sub Application.EnableEvents = False For Each r In Inte r.Offset(0, 1).Value = Date Next r Application.EnableEvents = True End Sub 

因为它是工作表代码,所以安装和自动使用非常简单:

  1. 右键单击Excel窗口底部附近的选项卡名称
  2. select查看代码 – 这会popup一个VBE窗口
  3. 粘贴东西,closuresVBE窗口

如果您有任何疑问,请先在试用工作表上尝试。

如果您保存该工作簿,该macros将与它一起保存。 如果您在2003年以后使用的是Excel版本,则必须将该文件另存为.xlsm而不是.xlsx

要删除macros:

  1. 调出上面的VBE窗口
  2. 清除代码
  3. closuresVBE窗口

要了解有关macros的更多信息,请参阅:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

要了解有关事件macros(工作表代码)的更多信息,请参阅:

http://www.mvps.org/dmcritchie/excel/event.htm

macros必须启用这个工作!

将代码更改为使用不同的列。

编辑#1:

这个版本不会覆盖列B中已经存在的资料:

 Private Sub Worksheet_Change(ByVal Target As Range) Dim A As Range, B As Range, Inte As Range, r As Range Set A = Range("A:A") Set Inte = Intersect(A, Target) If Inte Is Nothing Then Exit Sub Application.EnableEvents = False For Each r In Inte If r.Offset(0, 1).Value = "" Then r.Offset(0, 1).Value = Date End If Next r Application.EnableEvents = True End Sub 

ZAT的答案为我工作…后,我把“;”改为“,”。

 =IF(AND(D52<>"",D52<>0),NOW(),"") 

我用“NOW”而不是“TODAY”来给我一天的时间。

在相应的input单元格(例如D13)不为空且未填充0时,在所需的单元格(例如C13)中尝试此公式以填充当前date:

 =IF(AND(D13<>"";D13<>0);TODAY();"") 

然后,您可以将此公式复制到后续的单元格以填写该列的公式(例如col C)

在列A和B中inputdate和时间,并在列D中input数据

 Private Sub Worksheet_Change(ByVal Target As Range) Dim A As Range, B As Range, Inte As Range, r As Range Set A = Range("D:D") Set Inte = Intersect(A, Target) If Inte Is Nothing Then Exit Sub Application.EnableEvents = False For Each r In Inte If r.Value > 0 Then r.Offset(0, -3).Value = Date r.Offset(0, -3).NumberFormat = "dd-mm-yyyy" r.Offset(0, -2).Value = Time r.Offset(0, -2).NumberFormat = "hh:mm:ss AM/PM" Else r.Offset(0, -3).Value = "" r.Offset(0, -2).Value = "" End If Next r Application.EnableEvents = True End Sub