删除除名称以外的所有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