在Excel中,合并单元格的使用会带来相当令人不爽的麻烦。但其使用率还是蛮高的。
如图,需要对部门的销售额做总计。
Sub 樱桃小丸子()
Dim arr, d As Object, i&, r& '//声明变量
arr = [a1].CurrentRegion'//将数据放进数组
Set d = CreateObject('scripting.dictionary') '//创建字典
For i = 2 To UBound(arr) '//遍历数组元素
'//如果数组元素非空,即合并单元格范围中有数据的单元格,通常是第一个
If arr(i, 1) <> '' Then
'//标记其行号,如部门A的行为2,即r=2
r = i
'//将部门对应的销售额放进字典
d(arr(i, 1)) = arr(i, 3)
Else '//如果合并单元格中的单元格为空
'//根据标记的行号,也就是提取部门名称,并进行字典求和
d(arr(r, 1)) = d(arr(r, 1)) arr(i, 3)
End If
Next
'//输出数据
[e1].Resize(d.Count, 2) = Application.Transpose(Array(d.keys, d.items))
End Sub
结果: