Использование VBScript.vbs для удаления столбцов Excel на основе имен столбцов - PullRequest
0 голосов
/ 27 декабря 2018

Вместо того, чтобы использовать object.Worksheets("Sheet1").Range("A:A").EntireColumn.Delete в скрипте Visual Basic и повторять синтаксис n раз для целевых столбцов, мне было интересно, существуют ли более эффективные способы удаления всех столбцов в книге Excel, кроменекоторые из них основаны на именах столбцов (например, Date, Id и т. д.).

1 Ответ

0 голосов
/ 27 декабря 2018

Ну, вот что вы не просили ... 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 для каждого столбца

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...