前景提要
通過之前的學(xué)習(xí)如蚜,我們現(xiàn)在已經(jīng)學(xué)會(huì)了如何批量打開工作薄压恒,判斷工作薄是否打開等操作,批量匯總工作薄的基本操作基本上都已經(jīng)學(xué)了一遍了错邦,相信聰明的你已經(jīng)能夠明白這些操作的方法了,那么今天我們就開始進(jìn)入合并部分型宙,工作薄數(shù)據(jù)的匯總撬呢,相信很多人都已經(jīng)安耐不住了吧,不過學(xué)東西還是要一步步的來(lái)妆兑,急不得的魂拦。
在之前的標(biāo)題中,我們也是明確的強(qiáng)調(diào)了標(biāo)準(zhǔn)數(shù)據(jù)這幾個(gè)字搁嗓,什么是是標(biāo)注數(shù)據(jù)呢芯勘,就是說(shuō)當(dāng)前要匯總的幾個(gè)報(bào)表的數(shù)據(jù)格式字段都是完全相同的,不存在錯(cuò)位腺逛,字段不同等情況荷愕,這就是標(biāo)準(zhǔn)數(shù)據(jù)的意思,我們來(lái)看看實(shí)際的例子吧
方法分析
我們先來(lái)想想看棍矛,如果人手手工操作的話安疗,想要實(shí)現(xiàn)這樣的效果,我們應(yīng)該如何操作呢够委?
首先我們?nèi)斯げ僮鞯脑捈隼啵谝徊骄褪谴蜷_工作薄,然后選擇當(dāng)前的活動(dòng)區(qū)域茁帽,活動(dòng)區(qū)域的選擇我們可以使用UsedRange來(lái)選擇玉罐,因?yàn)槲覀円呀?jīng)提前輸入了標(biāo)頭,所以我們?cè)趶?fù)制其他的數(shù)據(jù)的時(shí)候潘拨,就不需要再次復(fù)制標(biāo)頭了吊输,因?yàn)楸景咐袠?biāo)頭只有一行,我們就需要向下移動(dòng)一行战秋,移動(dòng)要如何實(shí)現(xiàn)呢璧亚?之前我們學(xué)習(xí)過移動(dòng)單元格用offset,至于復(fù)制粘貼,就是copy啦脂信,這個(gè)非常簡(jiǎn)單癣蟋,基礎(chǔ)代碼的框架我們前面已經(jīng)寫好了,今天我們繼續(xù)補(bǔ)充復(fù)制匯總數(shù)據(jù)的代碼狰闪。
場(chǎng)景模擬
我們?cè)谥澳M的數(shù)據(jù)的基礎(chǔ)上疯搅,繼續(xù)復(fù)雜化數(shù)據(jù),假設(shè)我們現(xiàn)在有不同的銷售員在不同的商城的訂單銷售情況埋泵,同時(shí)也有香港以及部分海外地區(qū)的銷售情況幔欧,如下圖
這些數(shù)據(jù)我們都是放在一個(gè)文件夾內(nèi)的罪治,方便我們遍歷,我們現(xiàn)在要做的就是遍歷這個(gè)文件夾礁蔗,將文件夾內(nèi)的所有的工作薄的數(shù)據(jù)都匯總在test.xlsm這個(gè)工作薄內(nèi)觉义,那么要如何實(shí)現(xiàn)呢?
代碼區(qū)
Sub test()
Dim pathn, sth As Workbook, rng As Range, rng1 As Range, sbook As Workbook
pathn = ThisWorkbook.Path
Set sbook = ThisWorkbook
f = Dir(pathn & "\")
Do While f <> ""
l = Cells(Rows.Count, 1).End(xlUp).Row
If f <> "test.xlsm" Then
For Each sth In Workbooks
If sth.Name = f Then
GoTo line
End If
Next sth
Workbooks.Open (pathn & "\" & f)
'=====匯總工作薄的代碼======
Set rng = ActiveSheet.UsedRange
Set rng1 = rng.Offset(1, 0)
rng1.Copy sbook.Worksheets(1).Cells(l + 1, 1)
'=====匯總工作薄的代碼======
ActiveWorkbook.Close True
End If
line:
f = Dir()
Loop
End Sub
我們來(lái)看看最終的效果
非常的完美
這里我們成功的將所有的數(shù)據(jù)的匯總在了一個(gè)工作薄中浴井,為了驗(yàn)證數(shù)據(jù)的正確性晒骇,我隨意打開其中一個(gè)工作薄,我們的打開購(gòu)物天堂香港的工作薄
許志安磺浙,馬國(guó)明等知名演員都在這里洪囤,當(dāng)然這是虛構(gòu)的啦,我們來(lái)看看數(shù)據(jù)
再看看總表的數(shù)據(jù)
一個(gè)不多一個(gè)不少撕氧,完美的實(shí)現(xiàn)了數(shù)據(jù)的匯總瘤缩,怎么樣,小伙伴們伦泥,現(xiàn)在還覺得數(shù)據(jù)匯總很難嘛剥啤?
代碼分析
Set sbook = ThisWorkbook
定義一個(gè)新的工作薄的變量,方面我們后面的調(diào)用奄喂,本案例中铐殃,他就等于是test這個(gè)工作薄
Set rng = ActiveSheet.UsedRange
將當(dāng)前的活動(dòng)單元格復(fù)制給一個(gè)rng對(duì)象,活動(dòng)區(qū)域是哪里呢跨新?
我們來(lái)調(diào)試下
usedrange就是代表了當(dāng)前活動(dòng)工作表的所有被使用的數(shù)據(jù)區(qū)域的區(qū)間富腊,注意這里是一個(gè)區(qū)間
我們因?yàn)橐呀?jīng)設(shè)置好了標(biāo)頭,所以這里我們不需要再次復(fù)制標(biāo)頭了域帐,這里我們將我們所需要的區(qū)域往下移動(dòng)一行赘被,用offset實(shí)現(xiàn),來(lái)看看效果
成功的避開了標(biāo)頭行肖揣,然后就是復(fù)制粘貼了民假。
rng1.Copy sbook.Worksheets(1).Cells(l + 1, 1)
這里就非常的簡(jiǎn)單了,因?yàn)槲覀冎耙呀?jīng)獲得了test的最后一個(gè)非空單元格龙优,所以我們直接調(diào)用羊异,在最后一個(gè)非空單元格粘貼數(shù)據(jù)就好 。
后面的關(guān)閉遍歷框架在之前我們就已經(jīng)寫好 彤断。