【发布时间】:2019-12-10 21:16:20
【问题描述】:
我正在尝试按数组的值对 Excel 表进行排序。
我有这种格式的数据,我想根据这些数据过滤表格。
India
USA
China
我在字段4中有国家列,表格可以这样排序
Worksheets("Pilot").ListObjects("Table1").Range.AutoFilter
Field:=4, _
Criteria1:=Array("India", "USA", "China"), _
Operator:=xlFilterValues
但是,我想按数组中的字符串对表格进行排序,因为我有 100 多个要对表格进行排序的值。
我试图创建一个数组,但我无法获得由数组过滤的表格。数组被创建,但表只是过滤了数组的第一个值。数组变成一维我不知道这是否有问题?因此,如果我想获得数组的第三个值,我必须调用:
Myarray(3,1)
我试过了
Dim MyArray() As Variant
StartRow = 13
LastRow = Cells(StartRow, "X").CurrentRegion.Rows.count
MyArray = Range(Cells(StartRow, "X"), Cells(LastRow, "X")).Value
Worksheets("Pilot").ListObjects("Table1").Range.AutoFilter _
Field:=4, _
Criteria1:= MyArray, _
Operator:=xlFilterValues
这只是通过数组的第一个值过滤表。
所以预期的结果是从列中获取文本值,然后根据这些值对表进行排序。
非常感谢您的帮助。
【问题讨论】:
-
发生这种情况是因为您正在创建一个二维数组,而
Autofilter需要一个一维数组。
标签: arrays vba list sorting dynamic