|
在表格里,“标签”是一个一维数组,index(标签,2)可返回一个元素,得到正确结果。
在VBA里,[标签]引用属二维数组,Index([标签], 2)的结果不是一个元素,而是一个一行一列的数组。
要返回数组元素,须指定数组第二个下标:
MsgBox Evaluate("=index(标签,2,1)")
MsgBox WorksheetFunction.Index([标签], 2, 1)
或者使用两个Index()函数:
MsgBox Evaluate("=index(index(标签,2),1)")
或者,先把[标签]赋给数组Arr():
- Sub Test()
- Dim Arr()
- Arr = [标签]
- MsgBox Arr(2, 1)
- End Sub
复制代码
在表格公式中,一维数组分水平数组和垂直数组两种形式,单行引用或用逗号分隔的常量数组为水平数组,单列引用或用分号分隔的常量数组为垂直数组,无论水平数组还是垂直数组,都可用Index(数组,n)引用元素。在VBA中,一维数组只有用逗号分隔的水平数组,没有“垂直数组”,引用单元格单列区域,返回的结果也是二维数组,除了引用,也不能用其它方式构造出一维的“垂直数组”。
形如本例中的“标签”的单列数组,在VBA中属二维数组,须用二维下标引用,如用Transpose转置,可得到一维数组,即可用一维下标引用:
MsgBox Evaluate("=index(Transpose(标签),2)")
或:
MsgBox [index(Transpose(标签),2)]
|
|