当用户在相邻单元格中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
因为它是工作表代码,所以安装和自动使用非常简单:
- 右键单击Excel窗口底部附近的选项卡名称
- select查看代码 – 这会popup一个VBE窗口
- 粘贴东西,closuresVBE窗口
如果您有任何疑问,请先在试用工作表上尝试。
如果您保存该工作簿,该macros将与它一起保存。 如果您在2003年以后使用的是Excel版本,则必须将该文件另存为.xlsm而不是.xlsx
要删除macros:
- 调出上面的VBE窗口
- 清除代码
- 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