合并单元格基础知识(关于合并单元格的那些事)
合并单元格基础知识(关于合并单元格的那些事)举个例子:你可能会问:这看起来好像很简单的样子啊。但有个问题:合并了单元格之后,我如何引用这个合并单元格呢?Across为可选参数,如果该值为True,则将指定区域内的每一行合并为一个合并单元格。默认值为 False。举个例子Range("a1:c1").Merge 上面这句代码用于把A1到C1的单元格合并在一起。
合并单元格是我们在Excel的报表中经常可见的操作,虽然从数据完整性的角度上来讲,合并单元格并不被推荐,但合理的合并单元格能让报表可读性更好。今天我们来看一下和合并单元有关的那些事。
Merge
第一个当然是合并了。要把单元格合并非常简单,只需要对指定的range使用Merge方法即可。
expression.Merge(Across)
这里的Expression代表的是一个Range对象。
Across为可选参数,如果该值为True,则将指定区域内的每一行合并为一个合并单元格。默认值为 False。
举个例子
Range("a1:c1").Merge
上面这句代码用于把A1到C1的单元格合并在一起。
你可能会问:这看起来好像很简单的样子啊。但有个问题:合并了单元格之后,我如何引用这个合并单元格呢?
举个例子:
现在有一块竖着的合并单元格,我要给这个单元格赋值。那我就先观察一下,发现这个合并区域最左上角的单元格是C6,那么我直接这样写就可以:
range("c6") = "标题"
不知道大家观察到了没,当我选中这个合并区域时,Excel左上角的名称框里,显示的正是C6!
大家也可以自己再试试,如果我对于上面的单元格,用下面这句代码,看看单元格的内容会不会有改变?
Range("c7") = 1
UnMerge
有了合并当然要有取消合并。取消合并也是非常简单,使用下面这句即可。
expression.UnMerge
这里的Expression代表的也是一个Range对象。
还是上面这个例子,如果我C6到C12是一个合并单元格区域,那么我使用下面这几句都是等效的
Range("c6").UnMerge Range("c7").UnMerge ... Range("c12").UnMerge
也就是说,在对合并区域中的任何一个range使用Unmerge,都会让整个区域Unmerge。
当然,和前面Merge中所讲的一样,UnMerge后,合并单元格的值会赋值给区域左上角的单元格。
MergeArea
expression.MergeArea
Expression代表的是一个Range对象。这个方法返回一个Range对象,该对象代表包含指定单元格的合并区域。如果指定的单元格不在合并区域内,则该属性返回指定的单元格。
继续在上面的例子进行测试:
Debug.Print Range("c6").MergeArea.Address
返回:
$C$6:$C$13
MergeCells
这个是Range的一个属性,返回一个布尔值,也就是Range区域里有没有包含合并单元格。有就返回True,没有就返回False。
下面这个例子,用于获得当前工作表中所有处在合并状态的单元格
Sub test() Dim oCell As Range Dim sAddress As String For Each oCell In ActiveSheet.UsedRange If oCell.MergeCells Then sAddress = sAddress & oCell.Address & vbCrLf End If Next MsgBox sAddress End Sub
总结一下
- Merge
- UnMerge
- MergeArea
- MergeCells