【发布时间】:2011-12-07 10:55:05
【问题描述】:
例如,假设我有
{={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 计算工作表中使用的行数和列数,则它们是有意义的。但作为数组公式中数据的指示,没有。
【问题讨论】:
-
从哪里来? VBA,还是其他公式?
-
@chris neilsen 的解决方案运行良好。对于您的
{={1,2,3,4,5}}示例,如果您确实有一个 1x5 数组,那么.Value和.Value2方法应该引发类型不匹配错误,因为它们不适用于数组......但它们没有,这让我觉得你的数组在你的工作表上的大小是 1x1。 -
@Jean 当出于某种原因从 udf 调用时,
.CurrentArray不会返回整个范围,而只是返回第一个单元格,因此示例中没有错误。这就是为什么我说“在一个潜艇”。更奇怪的是,如果从 Sub 调用函数,它确实返回一个数组并且示例将错误。
标签: excel vba array-formulas