为row_num application.index

时间:2016-06-02 20:29:13

标签: arrays excel vba

我试图将两个非连续的列放入二维数组中,所以:

源范围如下所示:

a 1 apple
b 2 banana
c 3 pear
d 4 orange
e 5 grape

我希望我的数组看起来像这样:

指数1- [一个, 苹果]

指数2- 并[b, 香蕉]

指数3- [C, 梨]

我正在使用它:

vArr = Application.index(Range("A:AU"), [row(2:30)], Array(1, 4))

这很好用,除了我总是要硬编码我的最后一行。我想要这个:

vArr = Application.index(Range("A:AU"), [row(2:<lastRow>)], Array(1, 4))

这根本不起作用。我假设我不能使用变量来表示索引函数中的run_num。如果我为row_num输入一个0,它将只返回一列上的整行。一旦我为非连续的cols放入数组,它就会失败。

有人对我有任何建议吗?

1 个答案:

答案 0 :(得分:0)

所以我想通了,想要为其他想知道的人发布答案:

Application.index(.Value2, _
            .Worksheet.Evaluate("ROW(" & .Columns(1).Address & ")-1"), _
            Array(1, 4))

根据以下评论:

这是我在原始请求中要求的答案的更好表示:

vArr = Application.index(Range("A:AU"), Application.Evaluate("Row(2:" & lastRow & ")"), Array(1, 4))