首页 > 解决方案 > if then 语句删除列

问题描述

VBA 新手,试图了解如何为数据清理目的编写高效代码。

我有一个电子表格,我的第一步是删除带有某些标题的整个列(大约 25 个)。我尝试为每个标题编写 If Then 语句,但我发现它仅适用于第一项,然后我收到错误 424(对象未定义)。我还没有完全理解 VBA 结构,所以不确定如何更有效地编写它

Sub DataCleaning()

    Set MR = Range("A1:ZA1")
    For Each Cell In MR
    If Cell.Value = "subject" Then Cell.EntireColumn.Delete
    If Cell.Value = "Study" Then Cell.EntireColumn.Delete
    If Cell.Value = "site" Then Cell.EntireColumn.Delete

End Sub

这段代码最终也会有一系列额外的步骤,比如重新标记标题并将应用于多个选项卡,因此不一定总是找到每个标题。

任何有助于更好地构建这个结构的帮助将不胜感激!

标签: excelvbaif-statement

解决方案


试试这个:

Sub DataCleaning()

    For i = 677 To 1 Step -1
        With Cells(1, i)
            v = .Value
            If v = "subject" Or v = "Study" Or v = "site" Then
                .EntireColumn.Delete
            End If
        End With
    Next i

End Sub

推荐阅读