Excel:通过单元格引用将数组parameter passing给公式

代码明智这似乎很简单,但我仍然卡在一个#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个单元格的值 – 因此我假设单元格实际上包含一个数组。 那么情况不是这样吗? 单元格是否可以包含数组作为它们的值(或从其他单元格引用这些数据)而不将其存储为分隔string并将其转换为数组?

编辑 :这已经过了几年了,所以也许我可以在我发布这个问题后尝试的道路上发表评论。 最初我尝试着在单元格JSON结构上进行操作,取得了一定的成功。 从那以后,我也发现最近的Power Query(自从Excel 2016本地集成以来)确实支持其“单元”中的列表结构,事实上也支持相关的function 。 我现在不再使用其中的任何一种(现在对Spark更感兴趣),但是希望这可以帮助别人绊倒这个问题。

我不认为你有一个直接的方式,因为你想要将单元格值转换为数组

希望能帮助到你!!!

你可以试试这个:

 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