EXCEL不同表头的多表合并VBA
生活随笔
收集整理的這篇文章主要介紹了
EXCEL不同表头的多表合并VBA
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
以下內容學習連接:https://www.dazhuanlan.com/2019/10/23/5daf62ca917ed/?cf_chl_jschl_tk=b45aabfc01845564414cd15df99773357e2b075d-1583998221-0-AU2bmCw-wjZrAd6gGfVAgxlIoiB8Wv7zJlwYiHkktbJbtjMS9Hdbz77AYZOs9M_23-thCgszRinc8t6CNjli4pJ-jXidocAUGoRwR2N6Ho1701DTfBW4hiBra_vFXDgXiCn7EwsiXnB7yPNMIxfn235AJKwBb59MIp_Xb236p_qvdii-TfQ6zOpr6Z2jDQFS-9gDDrHAql2QtI58xsbjUkyzNK-aQ7pLHDJ1gS7zCFpIyZFIAn8SOnzUzB_P6n97KSrLdwVux88s_3kYj6dNHq09drqLf8itrcpcvu9tpOFtfuOKYEP0eDQhtZy20ofkXw
應用背景
- 同一個EXCEL工作表下有多個表頭不一樣(順序/列名不一樣)的sheet,需要把所有不一樣的sheet合并到一張總表,參考第一個sheet的表頭的順序格式,后邊的表列名一致則合并,列名不一致,在最后一列增加新的列
即:
VBA實現代碼
Sub combin() Dim d As Object Dim newst As Worksheet Dim sh As Worksheet Dim m Dim r, r2 Dim iSet d = CreateObject("scripting.dictionary")Set newst = Sheets.Add newst.Name = "合并" m = 2 For Each sh In SheetsIf sh.Name <> "合并" ThenFor i = 1 To sh.UsedRange.Columns.CountIf Not d.exists(sh.Cells(1, i).Value) Thend(sh.Cells(1, i).Value) = mm = m + 1End IfNext iEnd If Next shnewst.Range("A1") = "工作表" newst.Range(Cells(1, 2), Cells(1, d.Count + 1)) = d.keysFor Each sh In SheetsIf sh.Name <> "合并" Thenr = newst.UsedRange.Rows.Count + 1For i = 1 To sh.UsedRange.Columns.Countsh.UsedRange.Columns(i).Offset(1).Copy newst.Cells(r, d(sh.Cells(1, i).Value))Next ir2 = newst.UsedRange.Rows.Countnewst.Range("A" & r & ":A" & r2) = sh.NameEnd If Next shSet d = NothingEnd Sub總結
以上是生活随笔為你收集整理的EXCEL不同表头的多表合并VBA的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 文本差异对比高亮工具(基于谷歌
- 下一篇: Python——Numpy 之数组拼接