使用VBScript.vbs根据列名称删除Excel列

时间:2018-12-27 15:39:03

标签: excel vbscript

我不是想在Visual Basic脚本中使用object.Worksheets("Sheet1").Range("A:A").EntireColumn.Delete并在目标列上重复语法 n 次,我想知道是否有更有效的方法来删除目标列中的所有列Excel工作簿,但其中一些基于列名称(例如DateId等)除外。

1 个答案:

答案 0 :(得分:0)

好吧,这是您所不需要的... VBA

但这也许可以让您深入了解如何解决问题

Sub deleter()
    Dim col
    Dim header
    Dim exclusions As Object
    Set exclusions = CreateObject("Scripting.Dictionary")

    ' add column names you want to save
    exclusions.Add "Date", 1
    exclusions.Add "Id", 1

    ' iterate thru columns
    With ThisWorkbook.Worksheets("Sheet1").UsedRange
        For col = .Columns.Count To 1 Step -1
            ' save column name (row 1)
            header = Trim(CStr(.Cells(1, col).Value))
            ' if not in dictionary, delete column
            If Not exclusions.exists(header) Then
                .Columns(col).Delete
            End If
        Next
    End With

End Sub

这种方法假设每一列的列名都在第1行中