Hi,大家好,本专栏将会从零开始和大家用图文的方式,30天让你从不会到熟练使用函数,0基础开始学习Excel函数,让你喜欢上它!有兴趣的小伙伴可以持续关注我,或者在专栏进行查看学习,愿与君携手共进!
今天,我们讨论如何将指定文件夹下的多个工作簿的数据汇总到汇总表中。方法其实有很多种,不过今天给大家推荐的是VBA,它可以允许标题行具有合并的单元格,允许标题行具有多行,甚至允许数据详细信息区域具有杂乱的合并单元格等等。
其他的方式也有,一个是SQL语句,一个是power query。与前两种方法相比,VBA具有更好的灵活性。
PS:VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言
照例动画操作:
代码如下:
Sub Collectwk()
Dim Trow&, k&, arr, brr, i&, j&, book&, a&
Dim p$, f$
Application.ScreenUpdating = False
On Error Resume Next
With Application.FileDialog(msoFileDialogFolderPicker)
.AllowMultiSelect = False
If .Show Then
p = .SelectedItems(1)
Else
Exit Sub
End If
End With
If Right(p, 1) <> "\" Then p = p & "\"
Cells.ClearContents
Cells.NumberFormat = "@"
f = Dir(p & "*.xls*")
Do While f <> ""
If f <> ThisWorkbook.Name Then
With GetObject(p & f)
arr = .Sheets(1).UsedRange
k = k + 1
If k = 1 Then
ReDim brr(1 To 200000, 1 To UBound(arr, 2))
a = 1
Else
a = Trow + 1
End If
For i = a To UBound(arr)
k = k + 1
For j = 1 To UBound(brr, 2)
brr(k, j) = arr(i, j)
Next
Next
.Close False
End With
End If
f = Dir
Loop
If k > 0 Then
[a1].Resize(k, UBound(brr, 2)) = brr
MsgBox "您已经汇总完成。"
End If
Application.ScreenUpdating = True
End Sub
以上就是我与大家分享,我希望它能帮助你解决工作和学习中的一些问题。如果你觉得很好,就喜欢它。非常感谢您的关注。
我是Excel自动化办公吧,关注我持续分享更多的Excel技巧!
如果有不明白的或者不懂的可以在下方留言,我们会一一解答的。