問(wèn)題
上次介紹了一個(gè)vba實(shí)例:
Excel vba 實(shí)例(16) - 按指定字段分類(lèi)批量提取內(nèi)容
這個(gè)例子是把總表里面的數(shù)據(jù)根據(jù)單號(hào)批量提取相關(guān)內(nèi)容后钦椭,分別保存成單獨(dú)的文件追逮。
有「拆」表格,自然就有「合并」表格针余,也就是上面實(shí)例(16)的逆操作
,那么今天的例子就來(lái)說(shuō)說(shuō)如何用vba遍歷多個(gè)工作簿并提取內(nèi)容到總表。
舉例如下:
現(xiàn)在有兩張格式一樣但內(nèi)容不同的表主到,設(shè)為表一和表二浙滤,如下圖
其中表二里面有兩個(gè)sheet阴挣。
我們需要把這兩個(gè)表中的三個(gè)sheet按照單號(hào)這個(gè)字段,統(tǒng)一提取內(nèi)容到一個(gè)表格當(dāng)中去纺腊,效果如下圖:
思路
遍歷文件夾里面所有的excel文件畔咧,如果你里面有多個(gè)sheet,每個(gè)sheet也都遍歷一遍揖膜,然后單號(hào)以及其他內(nèi)容所在的單元格依次復(fù)制到總表當(dāng)中即可誓沸。
核心代碼如下:
While?X?<=?UBound(FileOpen)?'遍歷所有的excel文件
Set?wb?=?Workbooks.Open(FileOpen(X))?'打開(kāi)工作簿
????????With?ThisWorkbook.Sheets("sheet1")?'操作當(dāng)前文件下的sheet1表
????????????For?Each?sht?In?wb.Sheets?'遍歷目標(biāo)工作簿里的工作表
????????????????Do?While?sht.Range("A"?&?hang)?<>?""?'逐行提取內(nèi)容
????????????????????sht.Range("B2").Copy
????????????????????.Range("A"?&?flag).PasteSpecial?xlPasteValues
????????????????????sht.Range("A"?&?hang?&?":F"?&?hang).Copy?.Range("B"?&?flag)
????????????????????hang?=?hang?+?1
????????????????????flag?=?flag?+?1
????????????????Loop
????????????????hang?=?5
????????????Next
????????????wb.Close?False?'依次關(guān)閉目標(biāo)工作簿
????????End?With?
X?=?X?+?1
Wend
End?Sub
效果演示
如果需要源文件的話,后臺(tái)回復(fù)「遍歷提取」即可壹粟。
需要說(shuō)明一下:實(shí)例的代碼只是針對(duì)根據(jù)上面表格的字段設(shè)計(jì)的拜隧,如果你的字段數(shù)量不同,可能會(huì)出現(xiàn)錯(cuò)誤趁仙。
據(jù)了解洪添,做銷(xiāo)售、零售雀费、貿(mào)易等行業(yè)會(huì)用到銷(xiāo)售單干奢,訂貨單,采購(gòu)單等表格盏袄,根據(jù)業(yè)務(wù)的情況會(huì)有上面的一些統(tǒng)計(jì)需求忿峻,這兩個(gè)實(shí)例就是在幫多個(gè)小伙伴解決問(wèn)題的時(shí)候做的,用vba(16)辕羽、(17)兩個(gè)實(shí)例可以很方便快捷的實(shí)現(xiàn)效果逛尚。
如果還有其他需要定制化的功能,也可以聯(lián)系我逛漫。
其他VBA實(shí)例黑低,可以在公號(hào)里「精華整理」-「VBA實(shí)例」進(jìn)行查看。
歡迎交流!