前景提要
今天周末兄旬,心里一百個不愿意狼犯,但是還是要起床上班,在這里羨慕下周末雙休的童鞋领铐,然后周末并不會太忙悯森,也沒什么事情,一般情況下绪撵,周末領(lǐng)導也不會出現(xiàn)的瓢姻,所以我忙完工作之后,就開始看視頻了音诈,可能是太投入幻碱,居然領(lǐng)導進來也沒有感覺到,被領(lǐng)導抓個正著细溅,當時那叫一個尷尬褥傍,領(lǐng)導可能覺得我太閑,分配給我一個任務喇聊,讓我把公司去年每季度的銷售和今年第一季度的銷售最下對比恍风,然后把數(shù)據(jù)分給他,我當場答應了(不是承疲,我好像沒得選傲诟)
轉(zhuǎn)過頭來,我忽然發(fā)現(xiàn)燕鸽,季度這個東西我好像只在電視上看新聞報道的時候看到過這個東西兄世,對于一個非財務方面的小白,你讓我去做季度分析啊研,我連季度怎么劃分都快忘記了御滩,我怎么分析啊,不過忽然想起來党远,再VBA中有一個函數(shù)好像就是和季度有關(guān)的削解,看來運氣不錯,有救了沟娱。
函數(shù)說明
還好自己的機型還算是不錯氛驮,季度函數(shù)還真的是存在的,他就是DatePart()济似,具體的格式我已經(jīng)忘記了矫废,畢竟季度這個概念比較少用盏缤,我嘗試寫了下代碼,他的格式應該是這樣的DatePart("q",date),簡單的說蓖扑,我們只需要提供一個參數(shù)唉铜,就是第一個參數(shù)date,剩下的都是固定搭配律杠,直接套用就可以得到標準的季度分配了潭流,上個代碼我們來演示下效果。
上代碼
根據(jù)我現(xiàn)在所處的這樣的騎虎難下的場景柜去,相信日常工作中灰嫉,需要用到季度的時候,應該也是在年度總結(jié)或者季度總結(jié)的時候吧诡蜓,那個時候面對的肯定不是我們之前舉例中的那么幾個數(shù)字了熬甫,肯定是成千上萬行數(shù)據(jù)了,我現(xiàn)在手上的這個數(shù)據(jù)蔓罚。。瞻颂。我看看60053條數(shù)據(jù)豺谈!這樣的數(shù)據(jù),如果我們還是繼續(xù)使用普通的遍歷循環(huán)的方法的話贡这,效率很大茬末,可能電腦也會卡住的,這里我們使用數(shù)組盖矫,不要問我為什么丽惭,大數(shù)據(jù)時代,excel首選數(shù)組方法辈双,高效责掏!
為了展示測試效果,我這次虛擬構(gòu)造的測試數(shù)據(jù)有1048574行湃望,已經(jīng)差不多達到了excel 2013的極限了换衬,我們來測試下需要使用多少時間,當然可能也會收到電腦配置的影響证芭,數(shù)據(jù)多少有一些出入瞳浦,當不會太大
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)
arr1(1, k) = "第" & DatePart("q", arr(i, 1)) & "季度"
Next i
Range(Cells(1, 2), Cells(l, 2)) = arr1
T = Timer - T1
MsgBox "程序總共耗時 " & T & " 秒"
End Sub
結(jié)果出來了,一行數(shù)據(jù)總共用了不到1分鐘就出來結(jié)果了废士。成功的轉(zhuǎn)化成為了我們想要的季度的形式叫潦,后面就可以操作數(shù)據(jù)分析,透視表官硝,圖標各種操作了矗蕊。
代碼解析
因為牽扯到大數(shù)據(jù)四敞,我們今天這里使用了數(shù)組,數(shù)組大家可能是第一次接觸拔妥,他在excel中經(jīng)常用來處理大數(shù)據(jù)的忿危,數(shù)組是將內(nèi)容存儲再內(nèi)存中,以此來提高計算的效率的没龙,所以他的處理速度很快铺厨,在大數(shù)據(jù)時代,大家要開始慢慢的學習去使用數(shù)組方法硬纤,因為數(shù)組牽扯的方法和知識點解滓,比較的多,這里暫時先不涉及筝家,我們后面會細細的鋪展開洼裤。
T1 = Timer
*******
T = Timer - T1
MsgBox "程序總共耗時 " & T & " 秒"
這一段代碼主要是用來計算程序執(zhí)行的時間的,對程序本身并無任何作用溪王,我們可以先忽略腮鞍,需要的時候也可以直接套用。
l = Cells(Rows.Count, 1).End(xlUp).Row
獲取非空單元格的最大下標莹菱,這個我們在之前的分享中移国,已經(jīng)介紹過了,在實際使用中道伟,我們只需要更改下數(shù)字1為對應的行就可以了迹缀。
之后就是數(shù)組的使用方法了,這里我們先跳過蜜徽,后面會詳細說明祝懂,這里我們先記住這種方法,需要的時候直接套用即可拘鞋,更改下arr所對應的數(shù)據(jù)源即可砚蓬。
arr1(1, k) = "第" & DatePart("q", arr(i, 1)) & "季度"
這個就是我們今天的重點了,季度函數(shù)的使用掐禁,最開始的時候我們已經(jīng)講述了使用方法怜械,我們只需要更換第二參數(shù)為指定的日期就可以了。 這里我們是將對應的第一行的日期拿過來得到對應的季度的傅事。
Range(Cells(1, 2), Cells(l, 2)) = arr1
這句代碼的作用缕允,就是將我們得到的新的數(shù)組一次性填入第二列的操作,大家也可以先做了解蹭越,需要的時候也可以直接套用障本,這里改成我們需要的列就好。