作者:乔山办公网日期:
返回目录:excel表格制作
用VBA可以做到
右键工作表标签,选择查看代码
粘贴以下代码并保存
Private Sub Worksheet_Change(ByVal Target As Range)
'______说明↓___________________________________
'某列单元格发生变化
'若变化值不为e69da5e887aae799bee5baa6e997aee7ad94331空,对应列添加变化时间点日期时间
'若变化值为空,删除对应单元格数据
'示例为A列第2行发生变化,对应的B列添加或删除日期
'______说明↑___________________________________
Application.ScreenUpdating = False '关闭屏幕刷新
Dim cA, cB, startRG As String
Dim offsetc As Long
Dim rg As Range
'______设置参数↓_________________
cA = "A" '变化区域所在列
cB = "H" '日期生成列
startRG = "A2" '变化区域首单元格(防止改动表头触发事件)
'______设置参数↑_________________
offsetc = Columns(cB).Column - Columns(cA).Column
If Not Application.Intersect(Target, Columns(cA), Range(startRG, ActiveCell.SpecialCells(xlLastCell))) Is Nothing Then
For Each rg In Intersect(Target, Columns(cA), Range(startRG, ActiveCell.SpecialCells(xlLastCell)))
If rg <> "" Then
With rg.Offset(0, offsetc)
.Value = Now
.NumberFormatLocal = "yyyy/m/d h:mm:ss;@"
End With
Else
rg.Offset(0, offsetc).Clear
End If
Next rg
End If
Application.ScreenUpdating = True '恢复屏幕刷新
End Sub
然后将工作簿另存为启用宏的工作簿(xlsm格式)
操作如下:
1、以下表为例,在时百间一列填入公式以满足问题条件
2、首先打开菜单栏,点击选项
3、点击公式→计度算选项,勾选“启用迭代计算”,“知最多迭代次数”填1
4、在E2单元格输入公式“=IF(B2="","",IF(e2="",TEXT(IF(e2>0,NOW(),""),"y:d:h:m"),e2))”,按回道车
5、下拉填充公式
6、公式生效,在前面的单元格输入数据,时间版列就会显示输入的日期时间
7、前面的数据修改,后面的日期不会再进权行自动更新
假设在b列记录A列记录数据的时间:
=IF(ISBLANK(A1),"",IF(B1="",NOW(),B1))
注意:需要来在“选项”中勾选“启用源迭代计算”,且b列单元格格式设置为“时间”格式。
===================================
工具---宏---visual basic 编辑器---视图--代码窗口知--- 粘贴入 下列文字 按 保存 按钮(其中 ?? 可修改为你的名字)道
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 Then
Target.AddComment
Target.Comment.Text Text:="??:" & Chr(10) & Date & " " & Time
End If
End Sub