这是我的代码:
Sub test()
Dim Mail As Range, Phys As Range, Books As Range, Records As Range
Set Mail = Range("A1:A3")
Set Phys = Range("B1:B3")
Set Books = Range("A4:D4")
Set Records = Range("C1:D3")
Union(Mail, Phys, Books, Records).Merge
End Sub
此代码产生一个合并的单元格A1:D4-我想合并A1:A3,B1:B3等,以便有4个合并的单元格。
我唯一想到的解决方案是分别.merge
每个范围:
Mail.Merge
Phys.Merge
Books.Merge
Records.Merge
... etc
但是我认为必须有更好的方法!
答案 0 :(得分:1)
为什么过分复杂?您可以按照问题中的说明简单地合并单元格(请参阅Sub:OCCAMS_RAZOR
)。如果您想做一些精心设计的杀死IMO ,则可以遍历一个具有预定范围要合并的数组(请参阅Sub:OVER_KILL
)。
真正的问题是,您为什么需要合并这些范围?
正如@BruceWayne所提到的,在进行分析/摘要时,合并单元格的成本很高。合并的单元格会妨碍简单的单元格引用,公式和VBA。他们还删除了汇总表/数据透视表中数据的选项-这意味着需要手动构建图形。关键是,有很多缺点需要考虑。
Sub OCCAMS_RAZOR()
Dim Mail As Range, Phys As Range, Books As Range, Records As Range
Set Mail = Range("A1:A3"): Mail.Merge
Set Phys = Range("B1:B3"): Phys.Merge
Set Books = Range("A4:D4"): Books.Merge
Set Records = Range("C1:D3"): Records.Merge
End Sub
Sub OVER_KILL()
Dim Arr: Arr = Array("A1:A3", "B1:B3", "A4:D4", "C1:D3")
Dim i As Long
For i = LBound(Arr) To UBound(Arr)
Range(Arr(i)).Merge
Next i
End Sub
在两个子上,所有.Range
都需要使用工作表进行验证