Excel高手,如何使用VBA来合并一个工作表里面的所有工作簿的指定行? 求一个VBA,一个文件夹中多个EXCEL工作簿合并成一个工作...

excel\u5982\u4f55\u628a\u540c\u4e00\u4e2a\u5de5\u4f5c\u7c3f\u4e2d\uff0c\u6307\u5b9a\u5de5\u4f5c\u8868\u5408\u5e76\u5230\u4e00\u5f20\u5de5\u4f5c\u8868\u4e0a\uff08\u8bf7\u4f7f\u7528VBA\uff09

\u6309ALT+F11\u8c03\u51faVBA\u7a97\u53e3\uff0c\u63d2\u5165\u4e00\u4e2a\u6a21\u5757\uff0c\u7136\u540e\u628a\u4e0b\u9762\u7684\u4ee3\u7801\u590d\u5236\u8fdb\u53bb\u3002
Sub hz() Set NewSheet = Sheets.Add(Type:=xlWorksheet) '\u751f\u6210\u4e00\u4e2a\u65b0\u8868 Sheets(NewSheet.Index).Move Before:=Sheets(1) '\u5c06\u6b64\u65b0\u8868\u79fb\u52a8\u5230\u6700\u524d\u9762 For i = 2 To Worksheets.Count Sheets(i).UsedRange.Copy NewSheet.Cells([a65536].End(xlUp).Row + 2, 1) '\u5c06\u5176\u4ed6\u8868\u7684\u5df2\u4f7f\u7528\u533a\u57df\u590d\u5236\u5230\u65b0\u8868\u4e2d Next i MsgBox "\u5408\u5e76\u5b8c\u6210"End Sub\u6267\u884c\u4ee3\u7801\u5373\u53ef

1\u3001\u5c06\u9700\u8981\u5408\u5e76\u7684EXCEL\u6587\u4ef6\u4e0e\u76ee\u7684EXCEL\u6587\u4ef6\u653e\u5728\u4e00\u4e2a\u6587\u4ef6\u5939\u4e0b\u3002

2\u3001 \u6253\u5f00HB.xlsx\uff0c\u5c06\u201c\u5f00\u53d1\u5de5\u5177\u201d\u83dc\u5355\u52a0\u8f7d\u5230EXCEL\u83dc\u5355\u4e0b\u3002

3\u3001\u9996\u5148\u53f3\u952e\u70b9\u51fb\u83dc\u5355\u7a7a\u767d\u5904\uff0c\u9009\u62e9\u201c\u81ea\u5b9a\u4e49\u529f\u80fd\u533a\u201d\uff0c\u5728\u5f39\u51fa\u7684\u5bf9\u8bdd\u6846\u91cc\u9009\u62e9\u4e3b\u9009\u9879\u5361\u3002\u7136\u540e\u52fe\u9009\u201c\u5f00\u53d1\u5de5\u5177\u201d\u3002\u5982\u56fe\u6240\u793a\u3002

4\u3001 \u5236\u4f5c\u5bfc\u5165\u952e\u3002\u70b9\u51fb\u201c\u5f00\u53d1\u5de5\u5177\u201d\u83dc\u5355\uff0c\u9009\u62e9\u201c\u63d2\u5165\u201d--\u201cActivex\u201d\u63a7\u4ef6\u4e0b\u7684\u547d\u4ee4\u6309\u952e\u3002\u5728\u5de5\u4f5c\u8868\u4e2d\u753b\u4e00\u4e2a\u547d\u4ee4\u6309\u94ae\u3002

5\u3001 \u5355\u51fb\u201c\u5f00\u53d1\u5de5\u5177\u201d\u4e0b\u7684\u201c\u8bbe\u8ba1\u6a21\u5f0f\u201d\uff0c\u518d\u53cc\u51fb\u521a\u521a\u521b\u5efa\u7684\u547d\u4ee4\u6309\u94ae\u201cCommandButton1\u201d,\u8fdb\u5165\u4ee3\u7801\u7f16\u8f91\u6846\u3002

6\u3001 \u5c06\u4ee5\u4e0b\u4ee3\u7801\u5168\u90e8\u590d\u5236\u5230\u4ee3\u7801\u6846\u4e2d\u3002

7\u3001 \u5c06HB\u6587\u4ef6\u4fdd\u5b58\u6210\u542f\u7528\u5b8f\u7684\u5de5\u4f5c\u7c3f\u3002\u5173\u95ed\u5f53\u524d\u4ee3\u7801\u6846\uff0c\u56de\u5230EXCEL\u754c\u9762\u3002\u9009\u62e9\u201c\u6587\u4ef6\u201d--\u201c\u53e6\u5b58\u4e3a\u201d--\u201c\u4fdd\u5b58\u7c7b\u578b\u201d\u4e0b\u9009\u62e9\u201c\u542f\u7528\u5b8f\u7684\u5de5\u4f5c\u7c3f\u201d\uff0cOK\u3002

8\u3001\u6253\u5f00HB.xlsm,\u5355\u51fb\u6309\u94ae\u3002\u5219\u51e0\u4e2a\u9700\u8981\u5408\u5e76\u7684EXCEL\u6587\u4ef6\u4e2d\u7684\u5de5\u4f5c\u8868A,B,C\u5408\u5e76\u5230\u4e86HB.xlsm\u8fd9\u4e2a\u6587\u4ef6\u4e2d\u3002

分太少了,发一个之前写过的合并多张Excel到单张Sheet的代码,供参考:

运行主函数 Excels_2_Sheet

Sub deleteCells() 

Dim s 
Set s = ThisWorkbook.Sheets("Sheet1") 
s.Cells.Delete 

For Each shp In s.Shapes 
shp.Delete 
Next shp 

Set s = Nothing 

End Sub 

Sub Excels_2_Sheet() 
Dim FilesToOpen 
Dim x As Integer, b, ws, ar 

'On Error GoTo ErrHandler 
Application.ScreenUpdating = False 


Call deleteCells 


Set b = Worksheets(1) 


FilesToOpen = Application.GetOpenFilename(FileFilter:="MicroSoft Excel文件, *.xlsx; *.xls", MultiSelect:=True, Title:="要合并的文件") 

If TypeName(FilesToOpen) = "Boolean" Then 
MsgBox "没有选中的文件" 
GoTo ExitHandler 
End If 

x = 1 
While x <= UBound(FilesToOpen) 

'Workbooks.Open Filename:=FilesToOpen(x) 

Call pub_wbOpenOrActive2(FilesToOpen(x)) 


Set ws = Sheets(1) 
ws.Activate 

With ws 
If .UsedRange.Address <> "$A$1" Then 

'筛选 

Cells.AutoFilter 
Range("$A:$U").AutoFilter Field:=15, Criteria1:="=*(111111)*" 

'复制 
Set ar = Cells.SpecialCells(xlCellTypeVisible).Areas 

If ar.Count > 2 Then 


If b.Range("A1") = "" Then 
ar(1).Copy b.Range("A1") 
End If 

For j = 2 To ar.Count - 1 
ar(j).Copy b.Range("A" & b.Columns(1).Find("*", , , , 1, 2).Row + 1) 
'b.Range("A" & Columns(1).Find("*", , , , 1, 2).Row + 1).PasteSpecial Paste:=xlPasteValues 

Next j 

End If 

Set ar = Nothing 

End If 
End With 

Set ws = Nothing 

Call pub_wbClose2(FilesToOpen(x)) 
x = x + 1 



Wend 

ExitHandler: 
Application.ScreenUpdating = True 

ThisWorkbook.Activate 

ThisWorkbook.Sheets(1).Activate 
Exit Sub 

ErrHandler: 
MsgBox Err.Description 
Resume ExitHandler 
End Sub 

Sub test() 
For Each wbook In Workbooks 
Debug.Print wbook.Name 
Next wbook 
End Sub 

Sub pub_wbOpenOrActive(ByVal Wbdir As String, ByVal Wbname As String) 
' 将某Excel文件打开,或者激活 
' 如无此文件,弹出对话框 
For Each wbook In Workbooks 
If wbook.Name = Wbname Then 
wbook.Activate 
Exit Sub 

End If 
Next wbook 

If Len(Dir(Wbdir & Wbname)) > 0 Then ' 存在此文件 
Workbooks.Open Filename:=Wbdir & Wbname 
'Workbooks(Right(WblocalName, Len(WblocalName) - InStrRev(WblocalName, "\"))).Activate
Else 
MsgBox "无法找到 " & Wbdir & Wbname 
Exit Sub 
End If 
End Sub 




Sub pub_wbOpenOrActive2(ByVal wbLocalName As String) 
' 将某Excel文件打开,或者激活 
' 如无此文件,弹出对话框 

For Each wbook In Workbooks 
If wbook.Path & "\" & wbook.Name = wbLocalName Then 
wbook.Activate 
Exit Sub 
End If 
Next wbook 

If Len(Dir(wbLocalName)) > 0 Then ' 存在此文件 
Workbooks.Open Filename:=wbLocalName 
'Workbooks(Right(WblocalName, Len(WblocalName) - InStrRev(WblocalName, "\"))).Activate
Else 
MsgBox "无法找到 " & wbLocalName 
Exit Sub 
End If 

End Sub 



Sub pub_wbClose2(ByVal wbLocalName As String) 
' 将某Excel文件关闭 
' 如无此文件,忽略 
For Each wbook In Workbooks 
If wbook.Path & "\" & wbook.Name = wbLocalName Then 
wbook.Close False 
Exit Sub 
End If 
Next wbook 
End Sub


Sub 合并数据()

Dim n As Integer

Sheets.Add before:=Sheets(1) '新建一个sheet,使得这个sheet用来存放结果,且是第一个sheet
ActiveSheet.Name = "结果"

n = 1

For i = 2 To Sheets.Count '从第二个sheet到最后一个sheet

 For r = 10 To Sheets(i).UsedRange.Item(Sheets(i).UsedRange.Count).Row '从第十行到最后一行

  If Application.WorksheetFunction.CountA(Sheets(i).Range("b" & r & ":d" & r)) = 3 Then '如果第r行的Br、Cr、Dr单元格的内容都不为空

   For c = 2 To 4

   Sheets("结果").Cells(n, c) = Sheets(i).Cells(r, c) '保存到第一个sheet的B、C、D列

   Next c

  n = n + 1

  End If

 Next r

Next i


End Sub

已上传附件,点击按钮即可验证




你说的不少,看不清楚。建议你出示一个样表说说。

  • excel涓浣曚娇鐢╲ba浠g爜
    绛旓細浠g爜濡備笅:Sub 鑾峰彇VBA鐗堟湰()MsgBox Application.VBE.Version End Sub 褰撴寜F5閿紝灏辨姤锛氳繍琛屾椂閿欒1004銆傜粡鑰佸笀鎸囩偣锛屽崟鍑绘枃浠垛曗曢夐」鈥曗曚俊浠讳腑蹇冣曗曟墦寮鈥滀俊浠讳腑蹇冣濆璇濇锛屽畯璁剧疆鈥曗曞嬀閫夆滀俊浠诲VBA宸ョ▼瀵硅薄妯″瀷鐨勮闂濄傚啀娆¤繍琛岋紝灏变笉浼氬嚭鐜拌繍琛屾椂閿欒1004鎻愮ず銆傚悗鏉ュ湪寰蒋瀹樻柟涔熺湅鍒颁簡姝ゆ秷鎭...
  • 濡備綍鐢╒BA鍒朵綔Excel鏂囦欢
    绛旓細鎵撳紑Excel骞舵寜涓婣LT + F11鎵撳紑VBA缂栬緫鍣ㄣ傚湪VBA缂栬緫鍣ㄤ腑锛岄夋嫨鈥滄彃鍏モ> 鈥滄ā鍧椻濅互鍒涘缓涓涓柊妯″潡銆傚湪妯″潡涓紪鍐欐偍鐨刅BA浠g爜浠ュ垱寤篍xcel鏂囦欢銆備互涓嬫槸涓涓畝鍗曠殑绀轰緥锛屽皢鍦ㄦ柊宸ヤ綔绨夸腑鍒涘缓涓涓伐浣滆〃骞跺~鍏呮暟鎹細vba 澶嶅埗Sub CreateExcelFile()Dim ExcelApp As Object Dim ExcelWorkbook As Object Dim...
  • 鍦excel琛ㄦ牸涓浣跨敤vba鍑芥暟鎵撳紑宸ヤ綔钖
    绛旓細1銆侀鍏堟垜浠墦寮涓涓伐浣滄牱琛ㄤ綔涓轰緥瀛愩2銆佹垜浠浣跨敤alt+f11缁勫悎蹇嵎閿繘鍏be缂栬緫鍣紝鎻掑叆涓涓柊鐨勬ā鍧楋紝骞跺湪妯″潡涓緭鍏ヤ互涓嬩唬鐮侊細Sub openWorkbook1()Workbooks.Open 闇鎵撳紑鏂囦欢鐨勮矾寰刓鏂囦欢鍚 End Sub 3銆佺湅浠g爜鍐欑殑寰堟槑鐧戒簡锛屾瘮濡傛垜瑕佹墦寮妗岄潰涓婄殑涓涓伐浣滆杽锛岄偅涔堟垜浠氨鏄緭鍏ユ枃浠剁殑璺緞锛屾煡鎵捐矾寰...
  • excel涓鐨vba鏄粈涔堟剰鎬,濡備綍鐢
    绛旓細1銆佹墦寮鐢佃剳妗岄潰涓婄殑excel2007杞欢銆2銆佹墦寮涓涓狤xcel鏂囦欢锛岄紶鏍囧彸鍑讳笅闈㈢殑宸ヤ綔琛紙濡俿heet1锛夈傞夋嫨鈥滄煡鐪嬩唬鐮佲濓紝灏卞彲浠ユ墦寮VBA缂栬緫鐣岄潰銆3銆侀夋嫨濡備笅鍥炬墍绀虹殑涓嬫媺鑿滃崟锛岄夋嫨鈥渨orksheet鈥濄4銆侀夋嫨濡備笅鍥炬墍绀虹殑涓嬫媺鑿滃崟锛岄夋嫨瀵瑰簲鐨勮Е鍙戞ā寮忋傝繖閲岄夋嫨BeforeDoubleClick锛屾剰鎬濆氨鏄锛氬湪鏈伐浣滆〃榧犳爣鍙屽嚮锛...
  • excel vba鍩虹浣跨敤鏂规硶
    绛旓細鎵撳紑vba缂栬緫鍣ㄤ緷娆″崟鍑籓ffice鎸夐挳锛岀劧鍚庨夋嫨鈥淓xcel閫夐」鈥濓細鍗曞嚮鈥滃父鐢ㄢ锛岀劧鍚庡嬀閫夆滃湪鍔熻兘鍖烘樉绀衡樺紑鍙戝伐鍏封欓夐」鍗♀濓紝鐒跺悗鍗曞嚮鈥滅‘瀹氣濓細​渚濇鍗曞嚮鈥滃紑鍙戝伐鍏凤紝Visual Basic鈥濆悗锛屽嵆鍙墦寮VBA缂栬緫鍣細浣跨敤Vba缂栬緫鍣ㄥ彸鍑婚渶瑕佹彃鍏ヤ唬鐮佺殑琛紝濡傦紝鏈枃瑕佽揪鎴愮殑鐩爣鏄崟鍑讳竴涓寜閽紝鐒跺悗瀹炵幇瀵笲鍒3-11...
  • EXCEL涓浣曞埄鐢╒BA瀹炵幇鏁版嵁鑷姩閰嶅?
    绛旓細1. 鎵撳紑 Excel锛鎸変笅 `Alt + F11` 缁勫悎閿墦寮 Visual Basic Editor銆2. 鍦ㄥ乏渚х殑鈥滈」鐩祫婧愮鐞嗗櫒鈥濈獥鏍间腑锛屾壘鍒板苟灞曞紑浣犵殑宸ヤ綔绨匡紙Workbook锛夈3. 鍙屽嚮宸ヤ綔绨跨殑鍚嶇О锛屽湪鈥滀唬鐮佺獥鍙b濅腑杈撳叆浠ヤ笅 VBA 浠g爜锛歚``vba Sub 鑷姩閰嶅()Dim 绗竴鍒 As Range Dim 绗簩鍒 As Range Dim 缁撴灉鍖哄煙 As...
  • excel濡備綍浣跨敤VBA杩涜鏁版嵁绛涢塿ba涓瓫閫夋庝箞鐢
    绛旓細Copy '澶嶅埗Sheets(\"Sheet2\").Select'閫変腑琛2Range(Cells(k, 1), Cells(k, 5)).Select '閫変腑琛2鐨勫墠5鍒桝ctiveSheet.Paste Link:=True'绮樿创閾炬帴k = k + 1 '琛2琛屽彿澧炲姞End IfNextApplication.CutCopyMode = False '閫鍑哄鍒剁矘璐存ā寮 杩欏彞鍜屼笅闈㈢殑璇彞涓鸿緟鍔╄鍙ュ彲鍒燙ells(1,...
  • excel涓浣曚娇鐢╒BA瀹炵幇鍔ㄦ佺瓫閫?
    绛旓細濡傛灉鎴戠悊瑙f纭紝鎮ㄦ兂瑕佸湪涓涓崟鍏冩牸涓姩鎬佹樉绀虹壒瀹氫笟鍔″憳鐨勬垚浜ゅ鎴峰悕绉帮紝鑰屼笉闇瑕浣跨敤VBA浠g爜銆傚湪杩欑鎯呭喌涓嬶紝鎴戝缓璁偍灏濊瘯浣跨敤鍔ㄦ佹暟缁勫叕寮忋備互涓嬫槸濡備綍瀹炵幇鐨勬楠わ細閫夋嫨B1鍗曞厓鏍笺傚湪鍏紡鏍忎腑杈撳叆浠ヤ笅鍏紡锛=FILTER(B3:B11,A3:A11=A1)鎸夐敭鐩樹笂鐨凜trl + Shift + Enter缁勫悎閿紝浠ュ皢鍏紡璁剧疆涓哄姩鎬佹暟缁...
  • EXCEL涓浣曠敤VBA瀹炵幇
    绛旓細鏂规硶/姝ラ濡備笅锛1銆佸弻鍑绘墦寮妗岄潰鐨EXCEL锛2銆佸崟鍑诲彸涓婅鐨凮FFICE鍥炬爣锛屾壘鍒癊XCEL閫夐」锛屽崟鍑绘墦寮锛3銆佸嬀閫夊湪鍔熻兘鍖烘樉绀衡滃紑鍙戝伐鍏封濋夐」鍗★紝鍗曞嚮纭畾鎸夐挳瀹屾垚淇敼銆4銆佸崟鍑昏彍鍗曟爮鐨勫紑鍙戝伐鍏凤紝鐒跺悗鎵惧埌Visual Basic鍗曞嚮鎵撳紑渚垮彲浠ヨ繘琛岀浉鍏崇殑VBA缂栫▼銆
  • 濡備綍浣跨敤vba浠ヨ緭鍏ョ殑鍏抽敭瀛椾粠excel宸ヤ綔绨夸腑鏌ユ壘闅愯棌宸ヤ綔琛ㄤ腑鐨勬暟鎹苟...
    绛旓細瑕浣跨敤VBA缂栧啓绋嬪簭浠ユ牴鎹叧閿瓧浠Excel宸ヤ綔绨夸腑鏌ユ壘闅愯棌宸ヤ綔琛ㄤ腑鐨勬暟鎹苟杩斿洖鏄剧ず锛屽彲浠ユ寜鐓т互涓嬫楠よ繘琛屾搷浣滐細鎵撳紑Excel宸ヤ綔绨匡紝骞舵寜涓婣lt+F11杩涘叆VBA缂栬緫鍣ㄧ晫闈傚湪VBA缂栬緫鍣ㄤ腑锛岄夋嫨鎻掑叆鑿滃崟涓殑妯″潡锛屼互鍒涘缓涓涓柊鐨刅BA妯″潡銆傚湪鏂板缓鐨刅BA妯″潡涓紝缂栧啓浠ヤ笅浠g爜锛歷ba Copy code Sub SearchHiddenSheets()D...
  • 扩展阅读:免费excel入门视频教程 ... 免费版电子表格 ... Excel表格制作 ... excel永久免费版 ... hdmi2.1高清线推荐 ... 十款app禁止app安装 ... 永久免费excel财务系统 ... 免费做表格的软件 ... 免费永久vue源码 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网