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