前景提要
上一节呢,我们学习了针对工作簿字段内容不同,顺序也不同的情况下的数据汇总的操作,在那节发表之后呢,也有一些小伙伴私信我说,上一节的代码还存在着一些问题,比方说
1.虽然我们成功的汇总了数据,但是仅仅是针对一个工作簿有一个工作表的情况下汇总的,如果一个工作簿有多个工作表,这个代码还需要在扩展下
2.虽然成功的汇总了数据,但是很明显,数据是汇总了,但是一眼看下去,并不知道数据是哪里来的,后期校对数据的话,也非常的头疼。
仔细想想,大家说的还非常有道理的,那么针对上面的两个问题呢,我们今天就来继续完善下
最终实现的效果是:
1.增加针对多工作表的汇总
2.在汇总的数据中,增加数据来源,方便后期的校对
场景说明
OK,既然已经有了目标了,那就很好办了
直接看看怎么实现
第二点,增加数据来源非常简单,我们在最终写入数据的时候,我们在增加两列,分别写入工作簿的名称和工作表的名称即可。
第一点,针对多个工作表的数据汇总,那么就是要遍历循环工作表了。
这个是我们后面第7章的重点。
先来说下,工作表的遍历,其实和工作簿的遍历一样,都是利用for each循环就可以实现了。
非常的简单
那么,直接上代码吧。
代码区
Sub test24()
Application.DisplayAlerts = False
Dim sth As Worksheet, sth1 As Worksheet, rng1 As Range, rng As Range, sbook As Workbook, sb As Workbook, arr, arr1, arrt()
Set sbook = ThisWorkbook
pathn = ThisWorkbook.Path
Set sth1 = ActiveSheet
Set rng1 = Application.InputBox("请选择表头区域", "表头区域的确认", , , , , , 8)
arr1 = rng1
len1 = UBound(arr1, 2)
f = Dir(pathn & "\")
Do While f <> ""
l1 = Cells(Rows.Count, 1).End(xlUp).Row
If f <> "5-25.xlsm" Then
For Each sb In Workbooks
If sb.Name = f Then
GoTo line