前景提要
最近我们都在学习工作簿的汇总和合并操作,不过可能是因为我的大脑细胞比较有限,所涉及的场景比较少,小伙伴们也是提出了一些新的场景要求,所以,这里我们作为新番的形式,和大家分享。
好,进入正题,今天我们要合并的工作簿的场景呢,是这样的
有空行,又有合计字段,还有最后还有合并单元格的页尾。
当然我们并不需要合并这些空行,页尾了,我们需要的仅仅是中间的数据部分,那么面对今天这样的场景,我们要如何合并呢?
场景说明
既然已经有了空行,那么我们这里肯定不能使用Useadrange了,因为这个时候的使用区域,明显包含了空行和页尾的那些部分
而我们需要的仅仅是中间的核心数据。
不过我们可以观察到,数据中既然有合计字段,合计字段是数据源和其他的页尾标识区域的分水岭
发现了这一点,那么问题就简单了很多了,我们只需要获得合计这个字段所在的单元格行数,然后就可以将整个数据源一分为二了。
一分为二之后呢?
我们就会得到两个区域,从上图中可以看到,有些区域是有空行的,那么这样的情况下,又要如何操作呢?
so easy!
你获得A列的最后一个非空单元格不就可以了吗?如果非空单元格的行数大于合计的行数,那就是说明有空格了。
OK,有了思路,那么直接看代码
代码区
Sub test23()
Dim sth As Worksheet, rng As Range, urng As Range, sbook As Workbook, sb As Workbook
Set sbook = ThisWorkbook
pathn = ThisWorkbook.Path
f = Dir(pathn & "\")
Do While f <> ""
l1 = Cells(Rows.Count, 1).End(xlUp).Row
If f <> "5-23.xlsm" Then
For Each sb In Workbooks
If sb.Name = f Then
GoTo line