Excel中:通过细胞引用传递数组参数式(Excel: pass array argument to

2019-09-21 03:58发布

代码明智的,这似乎很简单,但我还是会卡在一个#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结构做操作的方向走,有一定量的成功。 从那时起,我还发现,近期电力查询(因为Excel的2016本机集成)不支持的列表结构(其中包括)在其“细胞”虽然,事实上确实支持的相关功能 。 我不使用任何这些作为多了(现在更感兴趣的是星火),但希望这可以帮助别人绊在了这个问题。

Answer 1:

我不这么认为你有一个直接的方法......你会想转换单元格数值数组

希望能帮助到你!!!



Answer 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: pass array argument to formula through cell reference