取消合并excel行和重复数据

时间:2012-02-09 16:45:26

标签: excel vba excel-vba

我已经获得了一个存储在Microsoft Excel中的相当大的数据库,我必须尝试将其转换为有用的东西 但是,我遇到的一个问题是某些数据被合并在一起(水平地在2s内)。

例如;

row 1: [ x ][ x ][ x ][ x ][ x ]
row 2: [ x ][ x ][ o    o ][ x ]
row 3: [ o    o ][ x ][ o    o ]

其中x是单个单元格并且o被合并在一起

我想要做的是取消所有行(使用取消合并按钮可以轻松完成),但是对于合并单元格的位置,将数据复制到2个单元格中。
从; [[ Some Data ]]
至; [ Some Data ][ Some Data ]

谢谢!任何帮助表示赞赏。

5 个答案:

答案 0 :(得分:41)

这是一个VBA解决方案。此宏将搜索活动工作表中的每个单元格以查看它们是否已合并。如果是,则将合并单元格的范围存储在temp中。范围变量,取消合并单元格,然后使用未合并范围中的第一个单元格的值填充范围(值是什么)。

Sub UnMergeFill()

Dim cell As Range, joinedCells As Range

For Each cell In ThisWorkbook.ActiveSheet.UsedRange
    If cell.MergeCells Then
        Set joinedCells = cell.MergeArea
        cell.MergeCells = False
        joinedCells.Value = cell.Value
    End If
Next

End Sub

答案 1 :(得分:11)

  1. 选择合并数据的范围
  2. 单击“合并和居中”以取消合并单元格
  3. 再次选择数据范围
  4. 按Ctrl + G>特别>坯
  5. 按=和向上箭头键
  6. 按Ctrl + Enter

答案 2 :(得分:3)

你不需要VBA这样的东西。

  1. 选择合并单元格的范围
  2. 取消合并单元格
  3. 主页 - >查找和选择 - >去特别... - >空白 - >确定
  4. 输入" ="移动一个单元格并按Ctrl + Enter
  5. 如果启用了R1C1样式: 档案 - >选项 - >公式 - > R1C1参考样式然后

    1. ...
    2. ...
    3. ...
    4. Type" = R [-1] c"然后按Ctrl + Enter

答案 3 :(得分:0)

我不知道如何快速实现VBA代码,但是我使用公式用值填充另一列...然后我进行了将值粘贴/粘贴到未合并单元格上的复制/粘贴魔术。此公式基于以下事实:该值与合并的单元格中的FIRST单元格相关联,所有其他值都解析为0(零)。

如果Col. A2:A100中有合并的单元格,我将执行以下操作:

  1. 在单元格B2中,我输入了以下公式:=IF(A2<>0,A2, B1)
  2. 将公式复制到B100
  3. 仅将值复制/粘贴到C列。
  4. 取消合并所有A列。
  5. 将值从C列复制到A列。

实际上,如果您大胆,可以将其简化为本系列...

  1. 取消合并所有A列
  2. 在单元格B2中,我输入了以下公式:=IF(A2<>0,A2, B1)
  3. 将公式复制到B100
  4. 仅将值复制/粘贴到A列

这跳过了使用列C ...

答案 4 :(得分:0)

这是在所有单元格中拥有数据的另一种方法。我有一个每天都会与合并单元格一起发布的报告,为避免每天取消合并单元格,我使用Power Query来引用该报告。

使用“填充”选项,我可以将数据填充到合并范围内的所有单元格中。为我工作! :)

Report view with marked FIll Down option