删除列而不删除合并的单元格 – excel vba
如何删除合并单元格的最左侧列而不删除其内容?
例如, range("A1:C1")
与.value="Hi"
合并
通过做range("A2").EntireColumn.delete(xlLeft)
,我不会失去合并单元格(现在变成range("A1:B1")
,但我失去了它的内容。
为什么不把这个值保存在一个临时variables中:
Sub DeleteColumnRetainMergedCellValue() 'Select merged cells, then run this subroutine. Dim v As String v = Selection.Cells(1, 1).Value Selection.Cells(1, 1).EntireColumn.Delete Selection.Cells(1, 1).Value = v End Sub
这是你在找什么? 如果不是,请多解释一下。
我不得不处理未知的合并单元格地址。 以下是我对可变范围的解决scheme:
'' The Microsoft Scripting Runtime must be activated for this to work '' Assumes rngDelete contains only one column Sub DeleteColumnRetainMergedCellValues(rngDelete As Range) Dim dicMerged As Dictionary Set dicMerged = New Dictionary Dim key As Variant Dim rngCell As Range Dim rngColumn As Range Dim rngOptimizedColumn As Range '' optimize the search range Set rngColumn = rngDelete.EntireColumn Set rngOptimizedColumn = Range( _ rngColumn.Cells(1, 1), _ rngColumn.Cells(rngColumn.Rows.Count, 1).End(xlUp)) '' find all merged cells, store their addresses and values For Each rngCell In rngOptimizedColumn.Cells If rngCell.MergeArea.Cells.Count > 1 Then dicMerged.Add _ rngCell.MergeArea.Cells(1, 1).Address, _ rngCell.MergeArea.Cells(1, 1).Value End If Next rngCell '' delete the column rngDelete.EntireColumn.Delete (xlLeft) '' paste back the value in the merged cells For Each key In dicMerged Range(key).Value = dicMerged(key) Next key End Sub