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
获取值