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

例如,假设我有

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

在一个小区里。 有什么方法可以找出该arrays中有多less个元素,以及这些元素是什么?

现在实现@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是有意义的。 但是作为数组公式中的数据的指示,没有。

你的公式只占用一个单元格,而一个单元格只能包含一个标量值,所以在单元格计算之后它将包含1。
但是你可以从VBA评估公式,这可以给你一个数组结果。 如果你的公式是在A1那么

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

将导致vArr包含4个数字的4个变体的arrays。
有几个“怪癖”的评估方法:请参阅我的网页之一的细节。

Sub ,如果cl是一个Range并且被设置为一个数组公式的一部分的单元格,那么

 cl.CurrentArray 

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

如果您的示例公式在单元格A1:E1 ,并且活动单元格是单元格A1 … E1中的任意一个,则运行

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

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

您可以使用.Rows.Count.Columns.Count获取大小, .Value获取值