是否有Excel Array公式的编程接口?

时间:2011-10-14 04:07:11

标签: excel vba array-formulas

例如,假设我有

{={1,2,3,4,5}}

在一个单元格中。有没有办法找出该数组中有多少元素,以及这些元素是什么?

现在实施@chris neilsen的想法,我现在有了VBA功能,如下所示

Function rinfo(r As Range) As String
    With r.CurrentArray
        rinfo = .Address & ", " & .Rows.Count & ", " & .Columns.Count & ", " & .Value & ", " & .Value2
    End With
End Function
然而,来自它的数据看起来没有希望,即

$A$29, 1, 1, 1, 1

如果Rows.Count和Columns.Count计算工作表中使用的行和列,则它们是有意义的。但作为数组公式中数据的指示,没有。

2 个答案:

答案 0 :(得分:5)

您的公式只占用一个单元格,并且一个单元格只能包含标量值,因此在计算单元格后它将包含1.
但您可以从VBA评估公式并且可以为您提供数组结果。如果你的公式是A1,那么

Dim vArr As Variant
vArr = Evaluate(Range("a1").Formula)

将导致vArr包含4个数字的4个变体的数组。
Evaluate方法有几个“怪癖”:详情请见one of my web pages

答案 1 :(得分:1)

Sub中,如果clRange并且设置为属于数组公式的单元格,那么

cl.CurrentArray

返回包含数组公式的范围。

如果您的示例公式位于单元格A1:E1中且activecell是单元格A1 .. E1中的任何一个,则运行

Sub zx()
    MsgBox "ref = " & ActiveCell.CurrentArray.Address
End Sub

会返回ref = $A$1:$E$1

的消息

您可以使用.Rows.Count.Columns.Count来获取尺寸,使用.Value来获取值