我不确定你为什么想要一个“部分”数组公式,是为了提高效率吗?AFAIK Excel 要求您在公式的任何部分都需要数组输入的情况下“输入数组”所有公式,但我认为在评估非数组部分时没有特别的效率损失。
在您的公式中,您似乎排名降序(最低值排名第 1),这是您的意图吗?如果是这样,那么我认为您不想为动态 IF 函数的 FALSE 部分返回 0,因为零可能会影响排名。
在任何情况下COUNTIF
都可以用来模拟RANK.EQ
,因此COUNTIFS
可以用来模拟RANK.EQ
条件 - 这些函数都不需要“数组条目”,所以你应该能够使用这个公式:
=COUNTIFS(RANKING_COLUMN,"<"&INDEX(RANKING_COLUMN,MATCH(TARGET_CELL, TARGET_COLUMN,0)),FILTER_COLUMN,FILTER_CELL)+1
该公式计算排名列中低于您的静态值并且过滤器列也满足过滤器单元格标准的值。这有效地为您提供了“有条件的降序”,尽管您需要加 1,否则最高排名为零。
编辑:解决您的评论-我假设您想要该特定过滤器的下一个项目?在您的MATCH
函数中,比较将产生一个TRUE/FALSE
值数组,因此 MATCH 的“查找值”需要为 TRUE .....不是 1,但即使如此,第二个COUNTIFS
也会包含每一行的结果,因此您可以获得匹配过滤器类别错误。这个版本应该解决这个问题[注意第二个额外的标准COUNTIFS
]
=MATCH(TRUE,COUNTIFS(RANKING_COLUMN,"<"&INDEX(RANKING_COLUMN,MATCH(TARGET_CELL, TARGET_COLUMN,0)),FILTER_COLUMN,FILTER_CELL)+1=COUNTIFS(RANKING_COLUMN,"<"&RANKING_COLUMN,FILTER_COLUMN,FILTER_COLUMN,FILTER_COLUMN,FILTER_CELL),0)
....如果你想从另一列检索一个值,你也需要 INDEX........但请注意,如果有重复项,则 RANKS 中可能存在间隙(根据正常行为RANK 函数),因此“下一个排名”可能不存在