0

我有一个包含大量数据的电子表格。大约一半的单元格与其他单元格水平合并,并包含名称,例如 John Doe。有谁知道如何编写一个宏来取消合并单元格,同时将单元格的值分配给之前合并的所有单元格?干杯杰克

编辑:我这样做的原因是检查两个相邻的单元格是否相等,即 A1 = A2。但是当任一单元格被合并时我遇到了问题。如果有人知道解决此问题的方法,而无需分离单元格并复制数据,那就更好了!

4

2 回答 2

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

以及结果前后的图片:

在此处输入图像描述

于 2013-06-18T22:52:18.133 回答
0

我能够从 KazJaw 获得解决方案,在 Mac 上进行一次编辑,更改Cell.UnMergeActiveSheet.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
于 2015-01-16T00:15:57.107 回答