Excel:通过单元格引用将数组参数传递给公式

Posted

技术标签:

【中文标题】Excel:通过单元格引用将数组参数传递给公式【英文标题】:Excel: pass array argument to formula through cell reference 【发布时间】:2012-08-12 06:44:16 【问题描述】:

就代码而言,这似乎很简单,但我仍然卡在#VALUE 上。

我制作了一个自定义 Excel 函数,将数组作为参数,这样使用时它本身就可以正常工作: =countArray(3,5) 将给出 2(为了说明,实际公式不同)。

但是,我想用作参数的实际数组包含在另一个单元格中(例如 =3,5)。因此,我想将该函数称为 =countArray(A1),使用对包含我想用作参数的数组的单元格的引用,而不是直接包含数组,所以我可以使用一个和相同的公式。

有没有办法做到这一点?

Cell formulas:
A1: =3,5
B1: =countArray(3,5)
B2: =countArray(A1)

Function countArray(arr()) As Integer
countArr = UBound(arr)
End Function

B1 中的公式有效,B2 中的公式无效。 至于 A1 的内容,当像这样放入 Excel 时,单元格值仅显示 3——因此我假设单元格因此实际上包含一个数组。 不是这样吗?如果不将其存储为分隔字符串并将其转换为数组,单元格是否不可能包含数组作为其值(或从其他单元格中引用这些数组)?

编辑:已经有几年了,所以也许我可以评论一下自从我发布这个问题以来我尝试过的道路。最初,我尝试在单元内 JSON 结构上进行操作,并取得了一定的成功。从那时起,我还发现最近的 Power Query(自 Excel 2016 原生集成以来)确实支持其“单元格”中的列表结构(以及其他结构),并且实际上支持 related functions。我不再使用这些中的任何一个(现在对 Spark 更感兴趣),但希望这可以帮助其他人偶然发现这个问题。

【问题讨论】:

您的“数组”如何存储在单元格中?作为用逗号分隔数字的字符串,例如1, 2, 3? 向我们展示您的代码,以便我们自己测试并告诉我们 A1 的确切值是多少(如 Remnant 所问) 用更多信息更新了原始帖子。 简短的回答是“不”。您不能在单元格中存储除数字、字符串、布尔值或错误之外的任何值。您的公式=3,5 返回 一个数组就好了,但是您需要两个单元格来保存返回的数组。单元格A1 仅获取返回数组的第一个元素。 (@qwerty 提供了一个很好的链接来了解更多关于数组公式的信息。)这个指向我的旧 *** 答案的链接不能直接回答你的问题,但它可能对上下文有帮助:***.com/a/1365314/58845 【参考方案1】:

我不认为你有直接的方法......就像你想要的那样Convert Cell Value to Array

希望对你有帮助!!!

【讨论】:

【参考方案2】:

你可以试试这个:

Function countarray(arr As Variant) As Long
    If typename(arr) = "Range" Then
        countarray = UBound(Evaluate([arr].Formula))
    Else
        countarray = UBound(arr)
    End If
End Function

【讨论】:

以上是关于Excel:通过单元格引用将数组参数传递给公式的主要内容,如果未能解决你的问题,请参考以下文章

VBA 将日期参数传递给 SQL Server 存储过程

如何将多个(非单元)参数传递给 Octave 的 parcellfun() 中的函数?

excel 里出现 #value? 如何解决呢?

EXCEL函数公式 与应用

excel vba如何将选中的不连续单元格赋值到数组

EXCEL里出现 #REF! 和#VALUE! 是啥意思?