excel - 根据列表删除列

标签 excel vba

我有一个宏,如果标题包含“组时间:”,则删除列

Sub remove_columns()
    For i = ActiveSheet.Columns.Count To 1 Step -1
        If InStr(1, Cells(1, i), "Group time:") Then Columns(i).EntireColumn.Delete
    Next i
End Sub

我还有其他列需要删除“总时间”、“最后一页”、“起始语言”...总共大约 10 个。

我可以创建上述宏的 10 个版本,但有没有一种方法可以让只有一个宏具有名称列表并删除这些列

谢谢

最佳答案

Sub remove_columns()

    Dim rngFound As Range
    Dim rngDel As Range
    Dim arrColumnNames() As Variant
    Dim varName As Variant
    Dim strFirst As String

    arrColumnNames = Array("Group time:", "Total time", "Last page", "Start language")

    For Each varName In arrColumnNames
        Set rngFound = Rows(1).Find(varName, Cells(1, Columns.Count), xlValues, xlPart)
        If Not rngFound Is Nothing Then
            strFirst = rngFound.Address
            Do
                If rngDel Is Nothing Then Set rngDel = rngFound Else Set rngDel = Union(rngDel, rngFound)
                Set rngFound = Rows(1).Find(varName, rngFound, xlValues, xlPart)
            Loop While rngFound.Address <> strFirst
        End If
    Next varName

    If Not rngDel Is Nothing Then rngDel.EntireColumn.Delete

    Set rngFound = Nothing
    Set rngDel = Nothing
    Erase arrColumnNames

End Sub

关于excel - 根据列表删除列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18213697/

相关文章:

excel - 如何在拆分工作表的 Pane 中禁用或限制滚动

excel - 使用 For 循环 VBA 使用另一个工作表中的值填充单元格

database - Access VBA : Error 2501 - The OpenQuery action was cancelled

mysql - UPDATE 查询语法错误

php - 在 PHP 中为用户创建 Excel 文件

每次值更改时Excel更改行颜色(非连续)

excel - 逐行比较Excel中的两列?

vba - 使用箭头键导航时将鼠标指针移至事件单元格的中心

excel - 转置和分组数据

excel-vba可玩迷宫制作单元格(解释为墙壁)成为无法通过的对象