我有一个用户定义的函数(不是我的,在一个插件中),它在A列中返回一个值数组。我在B列中也有以下(数组)公式,它返回列中的所有单元格包含一些指定字符串的A:
=INDEX($A$1:$A$256,SMALL(IF(ISNUMBER(SEARCH($B$1,$A$1:$A$256)),ROW($A$1:$A$256)),ROW(2:2)))
这使用ROW()函数来获取匹配元素的行。一切正常。
但是,我想稍微清理一下我的表格,并执行以下操作:
=INDEX(UDF(),SMALL(IF(ISNUMBER(SEARCH($B$1,UDF())),ROW(UDF())),ROW(2:2)))
你会注意到我已经用我的UDF中返回的数组替换了数组'$ A $ 1:$ A $ 256'。这似乎在ROW(UDF())部分中断。是否有类似的函数,它返回数组的索引,或'row'?
注意:我不想在VBA中这样做,我不能编辑UDF(它不是我的)。
编辑:
好的,我有更多的信息。如果我按照注释中的建议进行操作并评估公式,则所有评估返回值都是数组的第一个元素。这提出了一个相关的第二个问题。如何用UDF做到这一点?如果您熟悉Bloomberg,您会知道当您调用某些BDH或BDP公式(不将其称为数组公式)时,它会使用值填充范围。这是怎么发生的?!我觉得如果我知道这个问题的答案,它将帮助我理解这个特定UDF中发生的事情。