从数组VBA获取列

我很难从数组中返回一组列。 我已经返回一个sql select语句到我的variant数组。 它有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)交换数组的行和列。

multidimensional array将取决于他们如何创build。

我们可以这样想

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

昏暗(10,100)红色保留a(10,Ubound(a)+ 1)

像这样alignment(列,行),因为你只能重新调整数组的最后一个expression式。
所以我们会: a = Filter(Selection,Cells(i,1).Value,,vbTextCompare)rows = UBound(a,2)columns = UBound(a,1)Cells(i,1).Resize(columns,rows )= 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 = Filter(Selection,Cells(i,1).Value,,vbTextCompare)rows = UBound(a,1)columns = UBound(a,2)Cells(i,1).Resize(rows,columns)= a