如何清除合并单元格的内容

Posted

技术标签:

【中文标题】如何清除合并单元格的内容【英文标题】:How to clearcontents of a merged cells 【发布时间】:2016-01-15 03:10:04 【问题描述】:

我正在尝试清除单元格中的内容,但其中一些已合并,因此出现错误

1004 :"我们不能对合并的单元格这样做"

For l = 4 To 9
    If ws.Cells(j, l).Interior.ColorIndex = 19 Then
         ws.Range(j, l).ClearContents  'Error here
    End If
Next l 

另一个尝试使用.Cells 仍然返回错误

    For l = 4 To 9
        If ws.Cells(j, l).Interior.ColorIndex = 19 Then
             ws.Cells(j, l).ClearContents  'Error here
        End If
    Next l 

【问题讨论】:

您必须遍历每个单元格。合并单元格是魔鬼的工作。 【参考方案1】:

你需要Cells 而不是Range

ws.Cells(j, l).ClearContents

糟糕 - 忘记合并位了:

        If Cells(j, l).MergeCells Then
            Cells(j, l).MergeArea.ClearContents
        Else
            Cells(j, l).ClearContents
        End If

【讨论】:

一开始是这样的,后来我改成 Range 看看能不能用,后来也没用 @GordonBell 不,它没有。这不是有效的 Worksheet.Range 语法。 啊,我的错,ws.Range("NamedRange").MergeArea.ClearContents 有效。【参考方案2】:

试试

Range("A1:A20").Value = ""

无论单元格是否合并,这将每次都有效。

【讨论】:

【参考方案3】:

范围("").value = ""

【讨论】:

这不会运行,只会返回一个错误。【参考方案4】:
For l = 4 To 9
    If ws.Cells(1, l).Interior.ColorIndex = 19 Then
        ws.Cells(1, l).UnMerge
        ws.Cells(1, l).ClearContents
    End If
Next l

你可以在清除之前使用 unmerge 方法。

【讨论】:

UnMerge 可能是不需要的,并且在问题中没有提到(它可以作为“附加信息”在答案之后添加,这将是一个很好的接触!)。 For 循环和 If 条件与问题无关。回答时最好关注 OP 需求!【参考方案5】:

您还可以创建宏并使用快捷键 (ctrl + m),这样您就可以选择要合并和清除的单元格。这里是这段代码:

Sub Macro1()
'
' Macro1 Macro
'
' Keyboard Shortcut: Ctrl+m
'
    With Selection
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        If .MergeCells = True Then
            .MergeCells = False
        Else
            .MergeCells = True
        End If
    End With
End Sub

【讨论】:

【参考方案6】:

试试

ws.Range(j, l).Select
Selection.ClearContents

为我工作。

【讨论】:

【参考方案7】:

If Sheet Name.Range("cell no").MergeCells Then Sheet Name.Range("cell no").MergeArea.ClearContents 别的 Sheet Name.Range("cell no").ClearContents 结束如果

【讨论】:

【参考方案8】:

我遇到了同样的问题,我可以按照以下说明解决:

ws.Range("D10:F1000") = vbNullString

更改范围并使其适应您的问题。支持范围区域内的合并单元格。

【讨论】:

【参考方案9】:

尝试使用

ws.Range(j,l).Clearcontents

【讨论】:

哦,我明白你现在做了什么了。好更新。问题可能是您要求excel清除合并单元格中单个单元格的内容,我现在不知道如何解决。对不起。

以上是关于如何清除合并单元格的内容的主要内容,如果未能解决你的问题,请参考以下文章

excel中将两个单元格的内容合并

excel两个单元格内容合并不了怎么办?

C#Winform中DataGridView合并单元格的问题?

nodejs读取excel时如何判断合并的单元格

Excel如何合并多个单元格内容到一个单元格?

Pandas读取excel合并单元格的正确姿势(openpyxl合并单元格拆分并填充内容)