我有一个包含大量数据的电子表格。大约一半的单元格与其他单元格水平合并,并包含名称,例如约翰·多伊。 有没有人知道如何编写宏来取消合并单元格,同时将单元格的值分配给之前合并的所有单元格? 干杯 千斤顶
编辑:我这样做的原因是检查两个相邻的单元格是否相等,即A1 = A2。但是当合并任一个单元格时,我遇到了问题。如果有人知道解决这个问题的方法而不分离单元格并复制更好的数据!
答案 0 :(得分:1)
我在下面提供的想法是针对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
结果前后的图片显示:
答案 1 :(得分:0)
我能够从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