Excel #value 将动态数组公式的结果传递给另一个函数时出错

问题描述 投票:0回答:2

我在 A 列和 B 列中有以下数据。我想按组 1 过滤表,以仅返回组 2 值作为数组,并对该数组执行操作(在本例中为

RANK

如果我按照两步来做,效果就很好

D2
公式是
=TRANSPOSE(INDEX(FILTER($A$2:$B$12,$A$2:$A$12=A2), ,2))
(我转置只是为了便于阅读),
I2
公式是
=RANK.EQ(B2, D2:G2)

如果我尝试输入函数为

=RANK.EQ(B2,INDEX(FILTER($A$2:$B$12,$A$2:$A$12=A2), ,2))

我得到一个

#value
单元格错误作为数组,与过滤器结果的形状相同

任何人都可以帮助我避免中间步骤并弄清楚如何将其转化为单个公式吗?预先感谢。

修改 感谢@JvdV提供了使用替代方法的解决方案 - 我很想知道为什么我无法解决该错误 - 一个函数的返回值是什么阻止我将其传递给下一个函数?谢谢大家

excel excel-formula office365 dynamic-arrays
2个回答
2
投票

也许只需使用

COUNTIFS()

D2
中的公式:

=COUNTIFS(A2:A12,A2:A12,B2:B12,">"&B2:B12)+1

0
投票

是的,RANK.EQ 肯定存在可用性/功能/有用性缺陷。今天我了解了 COUNTIFS 方法。

讨论的类似主题:https://techcommunity.microsoft.com/t5/excel/using-filter-as-input-to-rank/m-p/3860460

我喜欢使用 COUNTIF。它可以提供适当的排名并解决上面列出的多个问题。首先,为了提高可读性和可转移性,请使用 Excel 表格(以便您可以通过 [column] 和 [@column] 引用单元格。其次,COUNTIFS 最多允许 127 个单独的条件集。

如何?将 COUNTIFS 视为多个“AND”语句(例如,当以下情况时对行进行计数:A 列满足条件 A AND 列 B 满足条件 B AND 依此类推...)。因此,在上面的示例中(假设您突出显示所有数据,包括标题 Group1、Group2 和 INSERT as Table)。现在,创建一个名为 RANK 的第三列并设置公式:

=COUNTIFS([Group1],[@Group1],[Group2],">"&[@Group2]) + 1

末尾的 + 1 将 RANK 设置为从 1(而不是 0)开始

RANK.EQ / RANK.AVG 的问题 a) 不支持(现在在许多 Excel 公式中常见)动态数组,从而无法对过滤/排序的子列表执行排名操作(如上面的示例),b)RANK 忽略重复项。这似乎不足以满足等级的定义。当我想到现实世界的场景时,可能会对学生的测试成绩进行排名(按不同班级分组或按特定测试分组)。当一个班级的学生考试成绩相同时,并不意味着班级的学生人数较少。 30 名学生中的第 23 位可能会产生误导(在一个 50 名学生的班级中,成绩为 A、B、C、D、F...学生可以告诉父母,他们的成绩在班上排名第五! )。或者说高尔夫呢?当两名玩家并列第三名时,排行榜上的下一位玩家是否是第四名?不,他排在第五位(或排名 = 5)。

请注意 Group1 = B 列表底部的添加值...此方法正确地将 Group2 值“2”排名为 6 个条目中的第 6 个。

干杯!

© www.soinside.com 2019 - 2024. All rights reserved.