有没有办法根据列号从Excel工作表中选择特定列?

时间:2017-01-25 10:17:45

标签: excel-vba vba excel

我有一个包含数千列的Excel工作表,我想选择其中一些,每个都有一个列号,是否可以选择符合特定条件的列?例如,具有数字50,70,120,154,200的列。如何从具有2000列的excel文件中选择它们?有没有宏可以做到这一点? 谢谢

2 个答案:

答案 0 :(得分:1)

采用@ Wujaskun的答案并在其基础上进行构建 - 您可以执行以下操作,这样您就可以在一行中指定列号,并且无需重复编码:

Sub select_columns()

Dim myColumns As Range

myColumnNumbers = Array(1, 5, 9, 13, 17) '.. and on and on..

ReDim myColumn(UBound(myColumnNumbers)) As Range

For Each c In myColumnNumbers

    If myColumns Is Nothing Then
        Set myColumns = Columns(c).EntireColumn
    Else
        Set myColumns = Union(myColumns, Columns(c).EntireColumn)
    End If

Next

myColumns.Select

Set myColumns = Nothing

End Sub

一个轻微的警告,不要重复列号(或至少第一个),因为这会导致联盟重置。

编辑 - 如果重复第一个列号,我现在已经改进了代码以允许(或至少不会导致问题)。

答案 1 :(得分:0)

您可以使用union选择多个列。我创建了一个简短的宏,只是为了让你了解它是如何工作的。

Sub select_columns()

Dim myColumns, myColumn(1 To 5) As Range

Set myColumn(1) = Columns(1).EntireColumn
Set myColumn(2) = Columns(3).EntireColumn
Set myColumn(3) = Columns(5).EntireColumn
Set myColumn(4) = Columns(7).EntireColumn
Set myColumn(5) = Columns(9).EntireColumn

Set myColumns = Union(myColumn(1), myColumn(2), myColumn(3), myColumn(4), myColumn(5))

myColumns.Select

End Sub