取消合并单元格并在Excel(for mac)2011中分发内容

时间:2013-06-17 22:56:50

标签: excel excel-vba merge spreadsheet vba

我有一个包含大量数据的电子表格。大约一半的单元格与其他单元格水平合并,并包含名称,例如约翰·多伊。 有没有人知道如何编写宏来取消合并单元格,同时将单元格的值分配给之前合并的所有单元格? 干杯 千斤顶

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

2 个答案:

答案 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

结果前后的图片显示:

enter image description here

答案 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