我已经获得了一个存储在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 ]
谢谢!任何帮助表示赞赏。
答案 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)
答案 2 :(得分:3)
你不需要VBA这样的东西。
如果启用了R1C1样式: 档案 - >选项 - >公式 - > R1C1参考样式然后
答案 3 :(得分:0)
我不知道如何快速实现VBA代码,但是我使用公式用值填充另一列...然后我进行了将值粘贴/粘贴到未合并单元格上的复制/粘贴魔术。此公式基于以下事实:该值与合并的单元格中的FIRST单元格相关联,所有其他值都解析为0(零)。
如果Col. A2:A100中有合并的单元格,我将执行以下操作:
=IF(A2<>0,A2, B1)
实际上,如果您大胆,可以将其简化为本系列...
=IF(A2<>0,A2, B1)
这跳过了使用列C ...
答案 4 :(得分:0)
这是在所有单元格中拥有数据的另一种方法。我有一个每天都会与合并单元格一起发布的报告,为避免每天取消合并单元格,我使用Power Query来引用该报告。
使用“填充”选项,我可以将数据填充到合并范围内的所有单元格中。为我工作! :)