删除除名称以外的所有Excel列

我正在尝试修改我find的一些代码。 我需要看两行不只一个。 我加了这个。 但不知道如何完成这个包括在循环中。 请有人帮忙。

Sub DeleteColumns() Dim currentColumn As Integer Dim columnHeading As String Dim columnHeading2 As String For currentColumn = ActiveSheet.UsedRange.Columns.Count To 1 Step -1 columnHeading = ActiveSheet.UsedRange.Cells(1, currentColumn).Value 'Check whether to preserve the column Select Case columnHeading 'Insert name of columns to preserve Case "NET EFFECTIVE", "OUTGOINGS" 'Do nothing Case Else Select Case columnHeading2 Case "HKD/sq.ft", "USD/sq.m." Case Else 'Delete the column ActiveSheet.Columns(currentColumn).Delete End Select Next End Sub 

你的代码有不同的方法。 这个为我工作

 Sub DeleteColumns() Dim currentColumn As Integer Dim columnHeading As String For currentColumn = ActiveSheet.UsedRange.Columns.Count To 1 Step -1 columnHeading = ActiveSheet.UsedRange.Cells(1, currentColumn).Value If columnHeading = "One" Or columnHeading = "Two" Then GoTo label Else ActiveSheet.Columns(currentColumn).Delete End If label: Next End Sub 

只需将"One""Two"replace为所需的列名。 您可以扩大IF条件以适应您的需求

谢谢lokusking!

我改变了一点,它的工作!

 Sub DeleteColumns() Dim currentColumn As Integer Dim columnHeading As String Dim columnHeading1 As String For currentColumn = ActiveSheet.UsedRange.Columns.Count To 1 Step -1 columnHeading = ActiveSheet.UsedRange.Cells(4, currentColumn).Value columnHeading1 = ActiveSheet.UsedRange.Cells(5, currentColumn).Value If columnHeading1 = "HKD/sq.ft" Or columnHeading1 = "USD/sq.m." Or columnHeading = "Outgoings" Or columnHeading = "Net effective" Then GoTo label Else ActiveSheet.Columns(currentColumn).Delete End If label: Next End Sub 

你的工作代码可以简化如下:

 Sub DeleteColumns() Dim currentColumn As Integer Dim columnHeading As String Dim columnHeading1 As String With ActiveSheet.UsedRange For currentColumn = .Columns.Count To 1 Step -1 columnHeading = .Cells(4, currentColumn).Value columnHeading1 = .Cells(5, currentColumn).Value If Not (columnHeading1 = "HKD/sq.ft" Or columnHeading1 = "USD/sq.m." Or columnHeading = "Outgoings" Or columnHeading = "Net effective") Then .Columns(currentColumn).Delete Next currentColumn End With End Sub