前景提要
之前我們成功的制作了一個(gè)簡易的數(shù)據(jù)錄入的小腳本,能夠自動(dòng)錄入時(shí)間制妄,日期等數(shù)據(jù)掸绞,某種程序上也是方便了大家在這方面的工作,不過今天小編收到了一個(gè)很奇怪的問題耕捞,一個(gè)店鋪的收銀員他希望老板能夠給他漲點(diǎn)工資衔掸,因?yàn)橹苣┤肆髁亢艽筇棠唬粋€(gè)人忙到手軟,老板聽到她的訴求之后敞映,也是非常的開明较曼,表示這些都是可以考慮的,但是增減工資振愿,都需要有依據(jù)捷犹,不然沒有規(guī)矩不成方圓,他希望能夠提供給他這半年來周末的銷售數(shù)據(jù)埃疫,確實(shí)是比平時(shí)多的話伏恐,他就可以同意加薪的要求孩哑。
收銀員也沒有想太多栓霜,當(dāng)場就答應(yīng)了,然后回去整理數(shù)據(jù)横蜒,但是店鋪的銷售記錄非常的亂胳蛮,只有銷售日期,不可能掰著手指頭去算那個(gè)是周末把丛晌,對著日歷來查仅炊,不知道要查多久,而且自己的工作也是一直都沒聽過澎蛛,他希望我能提供一個(gè)VBA的方法來幫助它實(shí)現(xiàn)快快速知道那些日期是周末抚垄,這樣他可以用最短的時(shí)間將數(shù)據(jù)統(tǒng)計(jì)出來交給老板,實(shí)現(xiàn)自己的加薪要求谋逻。
函數(shù)說明
這個(gè)要求呆馁,多少是有點(diǎn)少見,很少有公司會(huì)按照星期來進(jìn)行數(shù)據(jù)匯總的毁兆,不過眼下這樣的情況浙滤,按照星期匯總確實(shí)是比較實(shí)際的算法,再VBA中气堕,也有一個(gè)函數(shù)纺腊,是用來計(jì)算工作日的。就是Weekday(),他和excel函數(shù)中的Weekday()的作用是一樣的茎芭,本案例中我們就可以使用它來計(jì)算是否是周末揖膜。它的語法如下:Weekday(date, [firstdayofweek]),小編其實(shí)不太喜歡將語法之類的梅桩,記住常用的用法就好了壹粟,通過實(shí)例來體驗(yàn)一下。
上代碼
在這里呢摘投,我還是打算使用上一次的例子煮寡,因?yàn)檫@里主要是強(qiáng)調(diào)VBA的用法再碰到大數(shù)據(jù)處理的時(shí)候的優(yōu)勢虹蓄,昨天再用VBA轉(zhuǎn)換季度的時(shí)候,有一些讀者也是告訴了我一些不錯(cuò)的函數(shù)公式幸撕,誠然在我這個(gè)函數(shù)白癡面前薇组,我覺得這些公式都是非常的高大上的,我認(rèn)識一些人坐儿,他們也是在函數(shù)方面研究的非常的深入律胀,我并不是說函數(shù)的不好,函數(shù)有函數(shù)的優(yōu)勢貌矿,他比VBA更加方便快捷炭菌,也好寫很多,但是再某些情況下逛漫,比方說數(shù)據(jù)量很大的情況下黑低,用公式可能就會(huì)出現(xiàn)卡頓甚至白板的情況,因?yàn)閂BA有一個(gè)數(shù)組在其中酌毡,所以今天我還是打算利用上一次的例子克握,再一次演示VBA在處理大數(shù)據(jù)的時(shí)候,相對于公式的一些優(yōu)勢枷踏。
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 "程序總共耗時(shí) " & T & " 秒"
End Sub
這里我們依然將數(shù)據(jù)最大化
看看程序運(yùn)行的時(shí)間
最上面的正常日期的數(shù)據(jù)還是正確的
代碼解析
其實(shí)本節(jié)并沒有太多的代碼知識講解讶坯,因?yàn)榛旧隙际翘子蒙瞎?jié)的一些代碼,稍作修改就可以實(shí)現(xiàn)我們的需求了岗屏,之所以通過這樣的方式來實(shí)現(xiàn)我們的需求辆琅,主要是想要告訴大家,其實(shí)VBA的代碼并不是很難學(xué)这刷,也不是很難寫婉烟,只要你經(jīng)常學(xué)習(xí),經(jīng)常用暇屋,日常工作中一些常用的場景似袁,你都可以形成自己的代碼庫,主體框架下稍作修改就可以實(shí)現(xiàn)自己的新的需求了,大家下去之后可以多多練習(xí)昙衅,也可以慢慢領(lǐng)悟這個(gè)意義扬霜。