pandas excel有多个工作表_Excel通用一键汇总指定文件夹里的多个工作表
给大家分享一个EXCEL一键汇总的小方法。通过VBA实现,按键可以放到工具栏。网上能找到许多类似汇总代码,如果不懂得话不太敢用,因为工作中用的比较多就完善了一下,通用性考虑得更多些,现在分享给大家。
在这之前先明确两个名词 “工作表”和“工作簿”,工作表这里指的是EXCEL文件,工作簿指的是工作表里的sheet1,sheet2之类的。
因为有的地方这两个是反过来的。
先看一下汇总效果
然后是EXCEL设置
第一步:宏设置
第二步:快捷键设置
TXT中的就是汇总代码,注意步骤不能漏。
代码如下:
Sub 工作表__总表()
Dim wb, wb1 As Workbook
Dim fso, ff, f As Object
Dim p As String
Dim a, b, c As Long
Dim d, e
Set wb1 = ActiveWorkbook
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = ActiveWorkbook.Path
.Title = "请指定要汇总的文件夹"
If .Show = -1 Then
p = .SelectedItems(1)
Else
Exit Sub
End If
End With
c = Val(InputBox("请输入表头行数"))
If c = 0 Then
Exit Sub
End If
d = Timer
Application.ScreenUpdating = False
wb1.Sheets(1).Rows().ClearContents '清空目标表第一个工作簿
Set fso = CreateObject("scripting.filesystemobject")
Set ff = fso.getfolder(p)
For Each f In ff.Files '对指定文件夹循环每个文件
If Split(f.Name, ".")(UBound(Split(f.Name, "."))) Like "*xls*" Then '判断是不是Excel文件
Set wb = GetObject(f.Path)
If wb.Sheets(1).AutoFilterMode = True Then
wb.Sheets(1).Range("a" & 1 & ":z" & 65536).AutoFilter
End If
If wb1.Sheets(1).Cells(1, 1).Value = "" Then
wb.Sheets(1).UsedRange.Copy wb1.Sheets(1).Cells(1, 1)
'
Else
a = wb1.Sheets(1).Cells(65535, 1).End(xlUp).Row 'wb1目标工作表
b = wb.Sheets(1).Cells(65535, 1).End(xlUp).Row
wb.Sheets(1).Rows(c + 1 & ":" & b).Copy wb1.Sheets(1).Cells(a + 1, 1)
'
End If
wb.Close savechanges:=False
Set wb = Nothing
End If
Next
e = Timer - d
MsgBox "汇总成功,用时" & e & "秒"
Application.ScreenUpdating = True
End Sub
有些要注意的地方:1、要汇总的Excel文件都放到同一个文件夹里面,每个文件格式要一致,就是说表头要一致。2、每个表的最后一行数据的第一列不能为空,不然这行数据会统计不到。3、汇总文件放文件夹外面。
这次就到这,回头把总表按指定列分发工作表的代码发出来。