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