从数组VBA获取列

Clouse24

我很难从数组返回一组列。我向我的变量数组返回了一条sql select语句。它有16列。我需要获取16列中的12列,才能从数组中的特定行返回到电子表格。我正在使用此代码来获取我的行:

    If UBound(Filter(budget, Cells(i, 1).Value, , vbBinaryCompare)) >= 0 And Cells(i, 1).Value <> "" Then

然后如何只获取所需的12列?这些列是数组中的最后12列,它们将始终按照我需要的顺序排列。

先谢谢您的帮助!

用户名

这将取决于数组的形状。
如果是一维数组

 a = Filter(Selection, Cells(i, 1).Value, , vbTextCompare)
 rows = UBound(a)
 Cells(i, 1).Resize(1, rows ) = Application.WorksheetFunction.Transpose(a)

请注意,WorksheetFunction.Transpose(a)交换数组的行和列。

多维数组将取决于它们在何处创建。

我们可以这样想

数据库查询数组:a = recordset.getRows()

Dim a(10,100)Redim保留a(10,Ubound(a)+1)

之所以这样对齐(一个(列,行)),是因为您只能调整数组的最后一个维度的大小。
因此我们将: a = Filter(Selection,Cells(i,1).Value,vbTextCompare)行= UBound(a,2)列= UBound(a,1)Cells(i,1).Resize(列,行)= Application.WorksheetFunction.Transpose(a)

Excel范围数组以1为底,并且具有与范围本身相同的形状。

a = Range("A1:K200").Value
a(1,1) = cells(1, 1) evaluates to True

所以你可以做到这一点

a = Range("A1:K200").Value
Range("A1:K200") = a

或a =筛选器(选择,单元格(i,1)。值,vbTextCompare)行= UBound(a,1)列= UBound(a,2)单元格(i,1)。调整大小(行,列)= a

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章