我有一个包含大量数据的电子表格。大约一半的单元格与其他单元格水平合并,并包含名称,例如 John Doe。有谁知道如何编写一个宏来取消合并单元格,同时将单元格的值分配给之前合并的所有单元格?干杯杰克
编辑:我这样做的原因是检查两个相邻的单元格是否相等,即 A1 = A2。但是当任一单元格被合并时我遇到了问题。如果有人知道解决此问题的方法,而无需分离单元格并复制数据,那就更好了!
我有一个包含大量数据的电子表格。大约一半的单元格与其他单元格水平合并,并包含名称,例如 John Doe。有谁知道如何编写一个宏来取消合并单元格,同时将单元格的值分配给之前合并的所有单元格?干杯杰克
编辑:我这样做的原因是检查两个相邻的单元格是否相等,即 A1 = A2。但是当任一单元格被合并时我遇到了问题。如果有人知道解决此问题的方法,而无需分离单元格并复制数据,那就更好了!
我在下面提供的想法已针对 Excel 2010 VBA Win7 进行了测试。但是,我不确定我是否希望它也适用于 Mac(因为这是一组标准属性和方法Range object
)。如果这不起作用,请让我知道删除我的答案。
这个简单的代码适用于选定的区域,但是很容易将其更改为任何其他范围。下面的代码中还有其他一些注释。
Sub Unmerging_Selection()
Dim tmpAddress As String
Dim Cell As Range
'change Selection below for any other range to process
For Each Cell In Selection
'check if cell is merged
If Cell.MergeCells Then
'if so- check the range merged
tmpAddress = Cell.MergeArea.Address
'umnerge
Cell.UnMerge
'put the value of the cell to
Range(tmpAddress) = Cell
End If
Next
End sub
以及结果前后的图片:
我能够从 KazJaw 获得解决方案,在 Mac 上进行一次编辑,更改Cell.UnMerge
为
ActiveSheet.UsedRange.MergeCells = False
,由 Ron Debruin 提供:http ://www.rondebruin.nl/mac/mac027.htm 。
Sub Unmerging_Selection()
Dim tmpAddress As String
Dim Cell As Range
'change Selection below for any other range to process
For Each Cell In Selection
'check if cell is merged
If Cell.MergeCells Then
'if so- check the range merged
tmpAddress = Cell.MergeArea.Address
'umnerge
ActiveSheet.UsedRange.MergeCells = False
'put the value of the cell to
Range(tmpAddress) = Cell
End If
Next
End sub