将排名动态分配给 table 时使用 XLOOKUP 不会提取正确的数据

Using XLOOKUP when dynamically assigning rank to a table does not pull the correct data

我遇到的问题是尝试在使用排名公式生成的 table 列上使用 XLOOKUP。

Rank 列是使用以下公式创建的,因此它会根据可见列动态调整(自动过滤),因为 RANK.AVG 或 EQ 不考虑这一点。

=SUMPRODUCT(SUBTOTAL(3,OFFSET(Table2[[#All],[Sales]],ROW(Table2[[#All],[Sales]])-MIN(ROW(Table2[[#All],[Sales]])),0,1)),--([@Sales]<Table2[[#All],[Sales]]))

我使用的XLOOKUP很简单

=XLOOKUP(1,Table2[Rank], Table2[Rep])

我们的想法是,顶部的字段将根据可见行显示排名最高的表演者。问题是在过滤数据时,排名列会按应有的方式进行调整,但 XLOOKUP 并没有像我预期的那样发挥作用。它坚持最初排名 1,甚至做了一些我无法解释的完全奇怪的事情,当 运行 区域列中的过滤器组合时..

任何人都可以建议我如何更好地构建它以使其以预期的方式运行。任何帮助都将不胜感激。

您需要采用类似的结构来仅考虑可见行,例如:

=LOOKUP(1,QUOTIENT(0,SUBTOTAL(3,OFFSET(INDEX(Table2[Sales],1),ROW(Table2[Sales])-MIN(ROW(Table2[Sales])),))*(Table2[Rank]=1)),Table2[Rep])

不确定为什么要在其他公式中引用 table header 行。