Excel vba 實例(17) - 遍歷多個工作簿并提取內(nèi)容到總表

問題

上次介紹了一個vba實例:

Excel vba 實例(16) - 按指定字段分類批量提取內(nèi)容

這個例子是把總表里面的數(shù)據(jù)根據(jù)單號批量提取相關(guān)內(nèi)容后,分別保存成單獨的文件。

有「拆」表格,自然就有「合并」表格,也就是上面實例(16)的逆操作,那么今天的例子就來說說如何用vba遍歷多個工作簿并提取內(nèi)容到總表。

舉例如下:

現(xiàn)在有兩張格式一樣但內(nèi)容不同的表,設(shè)為表一和表二,如下圖

其中表二里面有兩個sheet。

我們需要把這兩個表中的三個sheet按照單號這個字段,統(tǒng)一提取內(nèi)容到一個表格當(dāng)中去,效果如下圖:

思路

遍歷文件夾里面所有的excel文件,如果你里面有多個sheet,每個sheet也都遍歷一遍,然后單號以及其他內(nèi)容所在的單元格依次復(fù)制到總表當(dāng)中即可。

核心代碼如下:

While?X?<=?UBound(FileOpen)?'遍歷所有的excel文件
Set?wb?=?Workbooks.Open(FileOpen(X))?'打開工作簿
????????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

效果演示

如果需要源文件的話,后臺回復(fù)「遍歷提取」即可。

需要說明一下:實例的代碼只是針對根據(jù)上面表格的字段設(shè)計的,如果你的字段數(shù)量不同,可能會出現(xiàn)錯誤。

據(jù)了解,做銷售、零售、貿(mào)易等行業(yè)會用到銷售單,訂貨單,采購單等表格,根據(jù)業(yè)務(wù)的情況會有上面的一些統(tǒng)計需求,這兩個實例就是在幫多個小伙伴解決問題的時候做的,用vba(16)、(17)兩個實例可以很方便快捷的實現(xiàn)效果。

如果還有其他需要定制化的功能,也可以聯(lián)系我。

其他VBA實例,可以在公號里「精華整理」-「VBA實例」進行查看。


歡迎交流!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容