Sub 合并數據()Dim n As IntegerSheets.Add before:=Sheets(1) '新建一個sheet,使得這個sheet用來存放結果,且是第一個
如何利用VBA實現多個Excel工作簿快速合并呢?下面就來簡單介紹一下其操作步驟。
材料/工具
VBA,Excel,電腦
'把要匯總的工作簿放在同一文件夾下,再建一個匯總工作簿,把下面代碼放入匯總工作簿中。 Sub ABCD() Dim lj As String Dim dirname As String Dim nm As String lj = ActiveWorkbook.Path nm = ActiveWorkbook.Name dirname = Dir(lj & "*.xls
方法
首先,按組合鍵“ALT+F11”打開VBE編輯器,在工程窗口下的“Microsoft Excel”對象進行單擊鼠標右鍵,再在彈出的框再進行如圖所示的操作。
1原始數據所在工作簿包含多個格式相同的工作表,只不過每個工作表內容不同,比如說不同人名的工作表數據或者不同部門填寫的數據。 2在原始數據同目錄下新建一個工作簿,建立兩個工作表,名稱分別為“首頁”和“合并匯總表”。 3按Alt+F11進入VBA代碼
然后,在其中粘貼下面的代碼:再進行保存。
可以在Excel表格中用下面的VBA程序實現: Sub Test() '打開當前目錄下文件,將Sheet1信息復制到匯總表上 Dim f$ Dim n& Mypath = ThisWorkbook.Path & "" f = Dir(Mypath & "*.xls*") Do While f > " " n = n + 1 Workbooks.Open Mypath & f Se
Sub 工作簿間工作表合并()
Sub CombineWorkbooks() Dim FilesToOpen, ft Dim x As Integer Application.ScreenUpdating = False On Error GoTo errhandler FilesToOpen = Application.GetOpenFilename _ (FileFilter:="Micrsofe Excel文件(*.xlsx), *.xls", _ MultiSelect
Option Explicit
用一個VBA就可以實現的。 使用方法: 1、新建一個工作薄,將其命名為你合并后的名字。 2、打開此工作保 3、在其下任一個工作表標簽上點擊右鍵,選擇“查看代碼”。 4、在打開的VBA編輯窗口中粘貼以下代碼: Sub 工作薄間工作表合并() Dim FileOpen
Sub hbgzb()
VBA就擅長這類的操作。當然,文件需要在指定的目錄中。你的數據還算規范,做起來沒問題。不知道你的表里邊的時間點是否一致。如果一致就更好處理了。 寫這個VBA不免費,因為需要耗費時間和精力的事。有意向的話可以私信。 另外,WPS免費版的不支
Dim sh As Worksheet, flag As Boolean, i As Integer, hrow As Integer, hrowc As Integer</p> flag = False
說千字,不如一附件 這里有有我以前做的合并文件夾下所有工作簿(包含子目錄)到當前工作表的一個程序 樓主可以參考學習下.
For i = 1 To Sheets.Count
VBA就擅長這類的操作。當然,文件需要在指定的目錄中。你的數據還算規范,做起來沒問題。不知道你的表里邊的時間點是否一致。如果一致就更好處理了。 寫這個VBA不免費,因為需要耗費時間和精力的事。有意向的話可以私信。 另外,WPS免費版的不支
If Sheets(i).Name = "合并數據" Then flag = True
我就簡單的給你寫幾句代碼 剩下你自己補充 大概的思路就是 打開待合并的文件,取得workbook對象 然后操作這個打開的工作簿文件的某個表sheets(序號) 因為你行數未固定 你可以循環累加X 直到空行再退出循環 X歸零 將單元格內容賦值到新表格中 也
Next
If flag = False Then
1、在表格中的加載項中找到“方方格子”選擇匯總拆分功能; 2、在下拉菜單中選擇“合并多表”; 3、選擇全部工作簿,然后選擇需要合并的工作表,不需要合并的,則不在前面勾選; 4、運行后會彈出信息,點擊確定,關閉 5、這樣,在一個新的工作表中,
Set sh = Worksheets.Add
請補充完善問題。 有很多不清楚的地方,如多個EXCEL表就是說多個文件嗎?,每個文件里面有幾個工作表,是只合并第一個還是全部,合并后如果工作表有同名時時該怎樣改名等等,細節問題要考慮清楚,否則代碼無法運行。
sh.Name = "合并數據"
這個問題有些大: 1、“多個工作簿”的的格式、結構是不是相同呢? 2、“多個工作簿”之間有沒有關聯呢? 3、“相同操作”發生在不同工作簿的相同位置還是不同位置? …… 解決思路: (如果多個工作簿的格式、結構相同、在相同位置操作),可以采用“錄
Sheets("合并數據").Move after:=Sheets(Sheets.Count)
如果是用EXCEL2010以上版本的話 將圖一、二粘貼到一起 再用數據透視表來做最快
End If
For i = 1 To Sheets.Count
VBA就擅長這類的操作。當然,文件需要在指定的目錄中。你的數據還算規范,做起來沒問題。不知道你的表里邊的時間點是否一致。如果一致就更好處理了。 寫這個VBA不免費,因為需要耗費時間和精力的事。有意向的話可以私信。 另外,WPS免費版的不支
If Sheets(i).Name <> "合并數據" Then
如果經常做這樣的表格,建議你下個“方方格子”,去百度下載安裝,安裝完后再打開表格就在你的表任務欄了,可以對工作表和工作簿進行拆分、匯總、合并等等,對數據分析幫助很大,一鍵就能拆分、合并等
hrow = Sheets("合并數據").UsedRange.Row
正常的啊 Sub 合并當前工作簿下的所有工作表()Application.ScreenUpdating = FalseFor j = 1 To Sheets.CountIf Sheets(j).Name ActiveSheet.Name ThenX = Range("A65536").End(xlUp).Row + 1Sheets(j).UsedRange.Copy Cells(X, 1)End IfNextRan
hrowc = Sheets("合并數據").UsedRange.Rows.Count
Sub 匯集數據() Dim s As Worksheet c=1 For Each s In ThisWorkbook.Worksheets With s If .Name "匯總表" Then '假設存放結果的工作表叫“匯總表”,如果不是請做相應修改 c = c + 1 For i=1 to 10 '假設你有10列數據要拷到匯總表 Sheets("匯總
If hrowc = 1 Then
Sub rm() For i = 1 To Sheet1.UsedRange.Rows.Count If Sheet1.Cells(i, 9) "" Then For j = 1 To 10 Sheet2.Cells(i, j) = Sheet1.Cells(i, j) Next End If If Sheet1.Cells(i + 1, 9) = "" Then If Sheet1.Cells(i, 9) "" Then k = i Sheet2.
Sheets(i).UsedRange.Copy Sheets("合并數據").Cells(hrow, 1).End(xlUp)
為什么要用VBA呢.我覺得反而把問題復雜化了 在EXCEL里,可以自己設置一個快捷鍵當作合并單元格的快捷鍵 其他內容一樣的,還可以用格式刷,不比VB慢哦~~
Else
Sheets(i).UsedRange.Copy Sheets("合并數據").Cells(hrow + hrowc - 1, 1).Offset(1, 0)
涉及到多個工作薄合并 需要循環遍歷各個工作薄,使用dir或者文件系統fso 下面是參考資料:http://club.excelhome.net/thread-1258425-1-1.html
End If
End If
Next i
End Sub
最快速的方法就是復制粘貼,把所有表的內容復制、粘貼到一個新表中。 如果表的個數成千上萬,可以寫VBA代碼來完成這個復制、粘貼的過程,下面是我寫的代碼,可以ALT+F11之后粘貼使用: sub 宏1() dim i,n for i=2 to sheets.count n=sheets(1).u
然后,關閉該窗口,打開Excel軟件,點擊界面上方的“開發工具”選項卡。
按ALT+F11調出VBA窗口,插入一個模塊,然后把下面的代碼復制進去。 Sub hz() Set NewSheet = Sheets.Add(Type:=xlWorksheet) '生成一個新表 Sheets(NewSheet.Index).Move Before:=Sheets(1) '將此新表移動到最前面 For i = 2 To Worksheets.Coun
然后,點擊其下方選項中的“加載宏”。
您是想了解方法嗎?親,“如何用VBA”,這問題太大了~~~~,我努力回答一下吧~~~ 首先您最好把這300多個文檔放在同一個文件夾里。然后,新建一個Excel文件,做一個宏,挨個打開文檔,判斷B1:C45是否為空,然后復制到本文件里或者直接關閉。 做這個
然后,在彈出的框中選擇“工作簿間工作表合并“,再點擊其中的”執行“按鈕。
Sub 合并當前目錄下所有工作簿的全部工作表() Dim MyPath, MyName, AWbName Dim Wb As Workbook, WbN As String Dim G As Long Dim Num As Long Dim BOX As String Application.ScreenUpdating = False MyPath = ActiveWorkbook.Path MyName = D
然后,在彈出的窗口中選擇要合并的工作簿,再點擊”打開“即可。
Sub MultiModi()Dim wb As WorkbookDim ws As WorksheetDim fnfn = Dir("盤符:文件所在的完整路徑名*.xls") '取得第一個工作簿的文件名(如果是2007版,則后綴名請改為 *.xlsx)Do While fn "" Set wb = Workbooks.Open(fn) '打開工作簿 For E
這樣,多個工作簿就合并成一個了。
擴展閱讀,以下內容您可能還感興趣。
如何用EXCEL中的VBA合并同一資料夾中,多個工作簿的同一個工作表?
說千字,不如一附件
這里copy有有我以前做的合并文件夾下所有工作簿(包含子目錄)到當前工作表的一個程序百
樓主可以參考學習下度.
也可以把問題作為內容(郵件主題一定要包含“Form”,本人以此為依據辨別知非垃圾郵件,以免誤刪)、excel文件(去掉機密內容)作為附件發來看道下 formmr@qq.com 三零三三一三六 二七
求一個VBA,一個文件夾下多個Excel工作簿按條件范圍合并成一個工作表內?
VBA就擅長這類的操作。當然,文件需要在指定的目錄中。你的數襲據還算規范,做起來沒問題。不知道你的表里百邊的時間點是否一致。如果一致就更好處理了。
寫這個VBA不免費,度因為需要耗費時間和精力的事。有意向的話可以私信。
另外,WPS免費版的不支持VBA,需要使用問Excel。
如果數據規則,要求明確,通常在用VBA只用點一下按鈕,剩下的交給代碼去答操作了。
思路,就是循環各個文件,寫入對應的列和行。
如何將不同工作簿里的內容合并到同一個表格里面,VBA代碼是什么
我就簡單的給你寫幾句代碼抄 剩下你自己補充 大概的思路就是 打開待合并的文件,取得workbook對象 然后操作這個打開的工作簿文件的某個表sheets(序號) 因為你行數未固定 你可以循環累加X 直到知空行再退出循環 X歸零 將單元格內容賦值到新表格中 也是累加行數Y,因為有多個文件Y不歸零Dim X1 As Workbook
Set X1 = Application.Workbooks.Open("文件路徑道.xlsx")
ThisWorkbook.Sheets(1).Cells(y, 1) = X1.Sheets(1).Cells(x, 1)追問請問文件路徑是指 放了我那幾個待合并文件的文件夾嗎?追答c:\test.xlsx
求一個vba合并excel時,如何將多個工作簿合并到一個新建指定工作表?
1、在百表格中的加載項中找到“方方格子”選擇匯總拆分功度能;
2、在下拉菜單中選擇“合并多表”;問
3、選擇全部工作簿,然后選擇需要合并的工答作表,不需要合并的,則不在前面勾選;
4、運行后會彈出信息,點擊專確定,關閉
5、這樣,在一個新屬的工作表中,就匯總了需要的數據。追問感謝回答,因公司里的excel沒有更新,暫時還沒有這個功能。
所以只能用vba來實現。
現在就遇到了這個問題。
怎樣利用vba把多個excle表合并一個工作簿下
請補充完善問題。
有很多不清楚的百地方,度如多個EXCEL表就是說多個文件嗎?,每個文件里面有幾個工作表,知是只合并第一個還是全部,合并后如道果工作表有同名版時時該怎樣改名等等,細節問題要考權慮清楚,否則代碼無法運行。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com