如何根据数组数组删除多列(可能不连续)?

假设你有一个数字数组,它们是你想要删除的列号。 一个聪明的想法是将它们转换为字母,然后连接它们并删除所有的列,如@ Siddharth Rout所示 。 但有一个问题,似乎有一个string范围内的上限,所以说

str = "AB:AB,CJ:CJ,CZ:CZ,NJ:NJ,NK:NK,NL:NL...", Len(str)=300, 'Just about 50 columns, not too many indeed, there are 16384 columns in Excel 2010!!! 

如果你使用Range(str).Delete Shift:=xlToLeft你会得到一个错误。 Range(str).Delete Shift:=xlToLeft ,如何解决这个问题?

另外一个select

 Option Explicit Public Sub DeleteColumns() Dim i As Long, arr As Variant arr = Split("3-5-7", "-") 'ascending order Application.ScreenUpdating = False With Sheet1 For i = UBound(arr) + 1 To LBound(arr) + 1 Step -1 .Cells(Val(arr(i - 1))).EntireColumn.Delete Next End With Application.ScreenUpdating = True End Sub 

(缓慢的大量的列)