菜单→资源礼包✔领取海量学习教程
HI,大家好,我是星光。
公众号后台有朋友提了个问题,类似于本文标题说的,A列输入数据,B列自动记录输入时间。今天趁着没什么人,就给大家聊一下这个比较冷门问题的几种常用的解决方法。
01
第1种方法是使用数据验证。
=NOW()
选中B2:B12单元格区域设置数据验证。验证条件为「序列」,来源设置为=$C$1。
在A列输入数据后,点击B列对应的单元格,可以从下拉菜单中,便捷的选择输入当前时间。
不过,这种方法虽然提高了数据录入效率,但是录入时间并不是完全自动生成的,顶多算半自动挡
。
02
第2种方法是使用迭代公式,它可以解决方法1的缺点。
在B2单元格输入以下函数公式,向下复制填充:
=IF(A2=””,””,IF(B2=””,NOW(),B2))
公式的意思是,如果A2单元格为空,则返回空,否则如果B2单元格为空,则返回当前电脑时间,否则就返回B2单元格自身的值。
公式输入完成后,由于它用到了,计算结果会返回0。
打开一个小开关。鼠标依次单击文件→选项→公式,勾选启用迭代计算。迭代次数设置个1000次就好,太多了Excel身体受不了。
设置完成后,在A列输入数据,B列就会自动填入当前电脑时间。
这个方法也有缺点,它只记录首次录入数据的时间,不记录修改的时间——得把原数据删除后重新激活单元格重新录入数据才行,参见上图A4单元格的演示过程。
03
第3种方法是使用VBA编程,它可以解决方法2的缺点。
按快捷键ALT+F11打开VBE编辑器,在对应工作表的代码窗口,输入以下VBA代码。
代码看不全可以左右拖动…▼
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row < 2 Then Exit Sub
If Target.Column 1 Then Exit Sub '填写单元格不是第1列退出程序
If Target.Cells.CountLarge 1 Then Exit Sub '填写多个单元格退出程序
If Target.Value "" Then Target.Offset(0, 1) = Now
End Sub
代码使用到了单元格内容编辑事件。
第2行和第3行代码判断单元格是否在目标范围内,第4行代码判断填写的单元格是否是单个。第5行代码判断是否输入数据,如果条件成立,就向右移动一个单元格填入当前系统时间。
不论是新输入数据还是修改原数据,这个方法都可以动态记录当前时间。
但它也是有缺点的
。
毕竟是使用了VBA事件代码,需要以宏文件的格式保存,更需要使用者启用宏,如果对方禁用了宏,摊手,那就白瞎了,代码压根就不会运行。
……
挑眉45°仰头望天,有情深者问,世间安得万全法,不负如来不负卿呢?
以上方法各有优劣,大家就根据自己的实际情况选择使用吧。
挥挥手,青山不改绿水长流,咱们……下周再见~
加入我的Excel会员,全面学习Excel
透视表 函数 图表 VBAPQ想学啥学啥
本文由公众号“Excel星球”首发。
限时特惠:本站每日持续更新海量各大内部网赚创业教程,会员可以下载全站资源点击查看详情
站长微信:11082411