VBA:找出不在数组内的元素,删除对应的列

比如表头(A行)单元格对应张三,李四,王五,钱六,赵九……
实际只需保留张三、王五、钱六。
打算声明一个数组[张三、王五、钱六],然后如果不在数组里面,就把对应的列删除掉。
用VBA代码如何删除了?

Sub test()
Dim arr
Dim i, j As Integer
Dim flag As Boolean
arr = Array("张三", "王五", "钱六")
flag = True
i = 1
Do While Cells(1, i) <> ""
    For j = 0 To UBound(arr)
        If Cells(1, i) = arr(j) Then
            flag = False
            Exit For
        End If
    Next j
    If flag Then
        Columns(i).Delete
        i = i - 1
    End If
    flag = True
    i = i + 1
Loop
End Sub

Excel VBA:按条件删除列

一 、代码

Sub delCol()
    Dim sht As Worksheet
    Dim arr
    Dim lCol As Long
    Dim i As Long
    Dim j As Long
    Dim k As Long
    
    Set sht = ActiveSheet
    arr = Split("张三、王五、钱六", "、")
    lCol = sht.UsedRange.Column + sht.UsedRange.Columns.Count - 1
    
    For i = lCol To 1 Step -1
        For j = LBound(arr) To UBound(arr)
            If arr(j) = sht.Cells(1, i) Then
                sht.Cells(1, i).EntireColumn.Delete
                k = k + 1
                Exit For
            End If
        Next j
    Next i
    
    Set sht = Nothing
    MsgBox Format(k, "完成 共删除了0列")
End Sub

二、执行效果

1.执行前

img

2.执行后

img