Excel VBA之函数篇-3.6自动录入时间不精确?搭配时间生成器更完美

原标题:ExcelVBA之函数篇-3.6自动录入时间不精确?搭配时间生成器更完美
前景提要昨天我们分享了时间/日期的函数 , time和date , 能够成功的帮助我们自动生成当前的时间和日期 , 在一些工作场景中 , 比方说后期数据整理 , 录入等方面都有不小的帮助 , 不过后来有一些朋友问我 , 他们很多时候并不是及时录入数据的 , 比方说很多店铺都是在下班或者是快要下班的时候 , 才回去整理数据的 , 而这个时候如果按照我们昨天的方式来录入的话 , 日期应该没问题 , 但是时间就可能有很大的问题了 , 登记表格的时候都是录入这个动作发生的时间 , 并非时间订单销售的时候 , 如果后期用这份数据来分析市场的话 , 可能会得出一个销售高峰在下班前半个钟这样的一个错误数据 , 那么这样的错误要如何避免呢?
最好的方法就是我们在录入数据的时候 , 手工录入销售的时间 , 不手工录入的话 , 就牵扯到另外一个问题 , 日期可能会出现格式不同的情况 , 时间更加麻烦 , 每次都要输入一个“:”,这样的话就无法实现高效录入的效果了 , 怎么办呢?别怕 , 我们今天继续完善下我们的代码 , 通过时间/日期生成器函数来实现自动+手工的方式来完善录入操作 。
函数说明今天我们重点介绍下两个函数 , 一个是日期生成器函数 , DateSerial , 你按照年月日这个顺序提供三个数据 , 它自动可以生成一个日期 , 这个函数还有一个很厉害的地方 , 它还可以自动计算正确的日期 , 比方说你输入2019 , 5 , 36 , 5月怎么都不可能有36天 , 那么这样输入会不错嘛?不会的 , 他会自动帮你调整到2019/6/5这样的日期 , 所以你也可以用来做日期之间的计算的 。 另外一个是时间生成器函数 , TimeSerial , 效果和上面的DateSerial是差不多的 , 你按照时分秒提供三个数据 , 他能够自动生成一个时间 。 好了 , 有了方法 , 我们来继续完善下我们之前的代码
上代码我们今天还是利用我们昨天的表格 , 表格方面不做任何的变动 , 这样大家就能够相互比较前后两种方法的差异 。

Excel VBA之函数篇-3.6自动录入时间不精确?搭配时间生成器更完美
文章图片
其实按照我们日常工作中的场景 , 数据录入一般都是集中在当天完成的 , 唯一可能不太准确的就是具体的时间 , 可能像我们前面说的 , 是集中某个时间段录入的 , 也有可能过了半个钟或者有空了才会去统计数据 , 录入数据的 , 所以自动生成时间可能并不太符合某些场景 , 今天我们为了一起分享下日期生成器函数的使用 , 所以默认时间、日期都需要手工录入这样子 , 方面我们学习这两个函数 , 实际工作中 , 大家可以根据自己的使用场景来选择自动、手动搭配来使用 。
Subtest()
Dimnum&,ShopName$
line:
num=Application.InputBox("请输入商品的序号","输入准确的序号",,,,,,3)
Ifnum<>0Then
ShopName=Choose(num,"苹果手机","vivo","华为","OPPOX27","摩托罗拉","红米小辣椒XR","百度音响5-5")
LastCol=Cells(Rows.Count,6).End(xlUp).Row
Cells(LastCol+1,6)=ShopName
'Cells(LastCol+1,9)=Date
NewDate=Application.InputBox("请输入实际销售日期,用点隔开","日期的输入",,,,,,3)
YEAR1=Split(NewDate,".")(0)
MONTH1=Split(NewDate,".")(1)
DAY1=Split(NewDate,".")(2)
Cells(LastCol+1,9)=DateSerial(YEAR1,MONTH1,DAY1)
NewDate=Application.InputBox("请输入实际销售时间,用点隔开","日期的输入",,,,,,3)
'Cells(LastCol+1,9).Offset(0,1)=Time
hour1=Split(NewDate,".")(0)
min1=Split(NewDate,".")(1)
senc1=Split(NewDate,".")(2)
Cells(LastCol+1,9).Offset(0,1)=TimeSerial(hour1,min1,senc1)
GoToline
EndIf
Excel VBA之函数篇-3.6自动录入时间不精确?搭配时间生成器更完美】EndSub
效果如图:
程序依然是需要我们输入产品的序号 , 这是我们之前学习的快速录入的方法 , 这里我们选择5 , 然后继续执行 , 摩托罗拉已经被录入产品那一列了 , 之后会有一个弹窗 , 提示我们输入三个数字 , 代表年月日 , 并且用点隔开

Excel VBA之函数篇-3.6自动录入时间不精确?搭配时间生成器更完美
文章图片
这里我们随便输入2020.10.5 , 这里我们依然利用split()函数来拆分 , 得到年月日 , 并通过DateSerial生成一个最终的日期 , 2020/10/5
然后程序继续执行 , 这里还有一个输入框 , 提示我们输入时分秒 , 依然使用点隔开 , 我们输入19.20.20这样的三个数据 , 这里也是成功的生成了一个准确的时间

Excel VBA之函数篇-3.6自动录入时间不精确?搭配时间生成器更完美