4

例如,假设我有

{={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 正在计算工作表中使用的行和列,则它们是有意义的。但作为数组公式中数据的指示,没有。

4

2 回答 2

5

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

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

将导致 vArr 包含 4 个数字的 4 个变体的数组。
Evaluate 方法有几个“怪癖”:有关详细信息,请参阅我的网页之一

于 2011-10-14T07:51:07.900 回答
1

在 aSub中,如果cl是 aRange并且设置为作为数组公式一部分的单元格,则

cl.CurrentArray

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

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

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

会返回一条消息ref = $A$1:$E$1

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

于 2011-10-14T05:26:55.637 回答