不知道大家在使用Excel进行数据录入时候是否普遍有这种需求:即当某些单元格内容变化或者某些条件满足时智能在指定位置填入当前日期或者时间。
正好昨天有读者和表哥讨论到这个问题,今天就来整理分享下我所总结的常用的几种方法。
01
手动快捷键法
使用快捷键录入当前日期或者时间是一种较为简单的办法,只不过需要记忆下面两个快捷键:
Ctrl+; 快速录入当前系统日期
Ctrl+Shift+; 快速录入当前系统时间
这种方法比较适合录入一两条当前日期/时间,请看演示:
如果记不住快捷键,类似的方法也可以使用输入法中自带的日期时间进行录入。
一般只需要输入rq,sj的首字母即可。
02
循环引用公式法
好多读者朋友其实在工作学习中还会碰到下面这种需求。以之前分享的全网高逼格项目管理模板[◀此处是链接]为例:
当H列的Status为Done时,自动在左侧I列填入实际结束日期。
这种功能可以用下面的公式来实现:
以I5单元格为例:
=IF(H5<>"Done","",IF(I5="",TODAY(),I5))
公式嵌套了两个IF函数,即可以实现上面的功能。
不过如果仅仅只是设置了公式,动手能力强的读者朋友一试便会出现如下警告:
原因是这样写公式,会被Excel检测到循环引用从而发出警告。
我们需要在设置中将循环引用打开即可:
【注意事项】
- 循环引用法基本上可以实现上面的需求功能,但是需要注意将文件Copy或者发送给其他人有时会出现启用迭代计算失败的情况,这时需要重新在选项中打开。
- 如果想要实现时间日期均录入,将TODAY()替换为NOW()即可。
03
数据有效性验证法
方法2使用公式录入时间为了能够使日期时间只更新一次,需要设置触发条件(H列为Done)和循环引用。
如果不存在触发条件仅仅是想能够快速简捷地录入时间我推荐数据有效性验证法。
连贯的设置方法如下:
如果仅需要录入当前日期,将NOW()修改为TODAY()即可。
4
VBA大法
如果对VBA熟悉的读者朋友,利用VBA大法还可以更加灵活。
例如正是因为发现方法2循环引用公式法存在迭代计算偶尔打开失败的情况,表哥给大家提供的项目管理模板使用了VBA方法来设置I列的日期。
方法是利用Worksheet_Change()事件,核心代码如下:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 And Target.Column = 8 Then
If Target = "Done" Then
If Target.Offset(0, 1) = "" Then
Target.Offset(0, 1) = Date
End If
Else
Target.Offset(0, 1) = ""
End If
End If
End Sub
作为知识扩展,使用VBA还有一些更高阶的用法,以前的文章也分享应用过,那就是Microsoft Data and Time Picker Control控件法。
这种方法用来进行交互式动态图表设计非常有用。
但是经读者朋友反馈,好像在不同版本,不同操作系统的Excel上兼容性不好。因此不做重点介绍,需要的读者根据控件关键词检索即可。
大家可以根据自己的需要选择合适的方法,如有任何疑问可在下方的留言区和表哥讨论互动哦~
历史文章
[01]
如何用Excel制作一个高逼格的项目管理模板mp.weixin.qq.com[02]
Hi,我想推荐你简单了解一些Excel VBA知识mp.weixin.qq.com[03]
还在用if函数进行条件判断?何不试试...mp.weixin.qq.com[04]
数据动图告诉你新冠肺炎是如何在世界范围传播的mp.weixin.qq.com注:本公众号所载原创文章均为作者辛苦创作,转载请联系作者并标明出处。
处处留心皆学问,大家可将这篇推文收藏,以备不时之需。
knowledge worth sharing!觉得有用,请点"赞"和"喜欢"▼