首页 > 解决方案 > VBA 将 1 列数组更改为一维数组

问题描述

我正在从表中加载一个数组。

aryNonE = ActiveSheet.Range("AA1:AA" & lRowNonE - 1)
test = Array("Bob Smith", "John Davies"...)

想要使用过滤器但在 aryNonE 上得到类型不匹配。测试工作正常

[调试显示1

如何让 aryNonE 看起来像测试?

谢谢

标签: arraysvba

解决方案


请尝试这种方式:

Sub test2DTo1DArray()
  Dim aryNonE, lRowNonE As Long
  
  lRowNonE = 10
  aryNonE = ActiveSheet.Range("AA1:AA" & lRowNonE - 1)              '2D array
  aryNonE = Application.Transpose(Application.Index(aryNonE, 0, 1)) '1D array
  'You can test it in this way:
  Debug.Print Join(aryNonE, ",")
End Sub

通过这种方式,它可以用于使用类似Criteria1...的数组进行过滤

但是,如果 2D 数组中的值是numbers,由于 Criteria 数组必须只保留 strings,因此提取数组的范围必须初步格式化为文本。


推荐阅读