VBA分享专栏excel的一些小技巧教程Excel 加油站

Excel VBA之函数篇-3.9变态的老板要求,统计周末产品销

2021-01-24  本文已影响0人  Excel和VBA

前景提要

之前我们成功的制作了一个简易的数据录入的小脚本,能够自动录入时间,日期等数据,某种程序上也是方便了大家在这方面的工作,不过今天小编收到了一个很奇怪的问题,一个店铺的收银员他希望老板能够给他涨点工资,因为周末人流量很大,他一个人忙到手软,老板听到她的诉求之后,也是非常的开明,表示这些都是可以考虑的,但是增减工资,都需要有依据,不然没有规矩不成方圆,他希望能够提供给他这半年来周末的销售数据,确实是比平时多的话,他就可以同意加薪的要求。

收银员也没有想太多,当场就答应了,然后回去整理数据,但是店铺的销售记录非常的乱,只有销售日期,不可能掰着手指头去算那个是周末把,对着日历来查,不知道要查多久,而且自己的工作也是一直都没听过,他希望我能提供一个VBA的方法来帮助它实现快快速知道那些日期是周末,这样他可以用最短的时间将数据统计出来交给老板,实现自己的加薪要求。

函数说明

这个要求,多少是有点少见,很少有公司会按照星期来进行数据汇总的,不过眼下这样的情况,按照星期汇总确实是比较实际的算法,再VBA中,也有一个函数,是用来计算工作日的。就是Weekday(),他和excel函数中的Weekday()的作用是一样的,本案例中我们就可以使用它来计算是否是周末。它的语法如下:Weekday(date, [firstdayofweek]),小编其实不太喜欢将语法之类的,记住常用的用法就好了,通过实例来体验一下。

上代码

在这里呢,我还是打算使用上一次的例子,因为这里主要是强调VBA的用法再碰到大数据处理的时候的优势,昨天再用VBA转换季度的时候,有一些读者也是告诉了我一些不错的函数公式,诚然在我这个函数白痴面前,我觉得这些公式都是非常的高大上的,我认识一些人,他们也是在函数方面研究的非常的深入,我并不是说函数的不好,函数有函数的优势,他比VBA更加方便快捷,也好写很多,但是再某些情况下,比方说数据量很大的情况下,用公式可能就会出现卡顿甚至白板的情况,因为VBA有一个数组在其中,所以今天我还是打算利用上一次的例子,再一次演示VBA在处理大数据的时候,相对于公式的一些优势。

Sub test()

Dim l&, arr, arr1(), i&, k&

T1 = Timer

l = Cells(Rows.Count, 1).End(xlUp).Row

arr = Range(Cells(1, 1), Cells(l, 1))

k = 0

For i = 1 To UBound(arr)

   k = k + 1

   ReDim Preserve arr1(1 To 1, 1 To k)

   If Weekday(arr(i, 1), 2) = 7 Then

    arr1(1, k) = "周日"

    Else

      arr1(1, k) = "非周日"

   End If

Next i

Range(Cells(1, 2), Cells(l, 2)) = WorksheetFunction.Transpose(arr1)

T = Timer - T1

MsgBox "程序总共耗时 " & T & " 秒"

End Sub

这里我们依然将数据最大化


image.png

看看程序运行的时间


image.png 最后面出现时间的错误,并不是计算的错误,主要是因为我们用来举例的数据日期不够用了。。。已经到了4770年。。。太扯了。 image.png

最上面的正常日期的数据还是正确的

image.png

代码解析

其实本节并没有太多的代码知识讲解,因为基本上都是套用上节的一些代码,稍作修改就可以实现我们的需求了,之所以通过这样的方式来实现我们的需求,主要是想要告诉大家,其实VBA的代码并不是很难学,也不是很难写,只要你经常学习,经常用,日常工作中一些常用的场景,你都可以形成自己的代码库,主体框架下稍作修改就可以实现自己的新的需求了,大家下去之后可以多多练习,也可以慢慢领悟这个意义。

上一篇下一篇

猜你喜欢

热点阅读