在两个dynamic范围中查找最大值

我原来的问题还不太清楚,所以这里有一点澄清:

我正在使用的是在数据透视表中使用的项目列表。 每行代表一个项目,一个人可以有多个项目,所以同一个人的名字出现在多行上。 这些项目排名1-15。 对于最终的产出,我们正在寻找每个项目的个人数量。 我们希望每个人都被计算一次,并且我们希望他们计入他们拥有的最高等级的物品。 最后,这给了我们一个个人团体的统计,这些团体是每个人拥有的排名最高的项目。

人名在A列,行列在F列。我有一个公式,可以find最高F每A,但失败时,新的数据加载和总行数改变。

这是我原来的问题,以及我正在使用的公式:

我有一个数组公式可以工作,除非表中的条目数量发生变化。 我知道如何find最后一排,但我不知道如何将两者结合起来。 以下是详细信息:

我有一个表从另一张表上的dynamic更新查询中提取数据。 它在列A中有重复的文本值,在列F中有唯一的数字值。 如果当前行的F值是对应A的最大F值,则返回1,否则返回“No”(更容易过滤和计数其他地方的数字,不要问)。

  A ... F
乔1.2
乔12.7
拉尔夫3.5
拉尔夫4.1
拉尔夫0.5
沃伦12.9
迈克6.4
迈克8.5
拉尔夫1.3
沃伦7.9
沃伦14.8 
{=IF(A2="","",IF(F2=MAX(($A$2:$A$1719=A2)*($F$2:$F$1719)),N(1),"No"))} 

这个公式工作正常,除了在任何一天的条目的总范围可以改变。 今天有1718行,加上列标题。 明天我可以有1300个参赛作品,2000年(但不超过2000年)。 如果列A中有空行,整个公式将失败,报表的其余部分将崩溃。

我知道我可以通过使用以下内容获得A列中最后一行的编号:

 =MATCH(TRUE, INDEX(ISBLANK('SourceQuery'!A1:A2001), 0, 0), 0)-1 

今天,公式返回“1719”这正是我想要的。 在第一个公式中,您可以看到涉及该行号的两个单元格区域引用。

我想不出的是如何把两者结合起来。 理论上,我应该能够用第二个公式中的某种参考来代替第一个公式中的$ A $ 2:$ A $ 1719的参考,但是我找不到一个可行的方法。 有任何想法吗?

对于未来失去的灵魂试图解决与我相同的问题,有两个很好的答案。 您可以在下面的答案中阅读详细信息,但这里是快速参考。

如果你想通过我使用数组公式的方法来做到这一点,请使用: {=IF(A2="","",IF(F2=MAX((INDIRECT("$A$2:$A$" & (MATCH(TRUE, INDEX(ISBLANK('SourceQuery'!A1:A2001), 0, 0), 0)-1))=A2)*(INDIRECT("$F$2:$F$" & (MATCH(TRUE, INDEX(ISBLANK('SourceQuery'!A1:A2001), 0, 0), 0)-1)))),N(1),"No"))}

如果你不想像我这样疯狂的人,你根本不需要使用数组公式。 =IF(A2="","",IF(COUNTIFS(A:A,A2,F:F,">"&F2)>0,"No",1))

您并不需要在这里findMAX – 您只需要知道该特定列A值是否有更高的值。 您可以使用COUNTIFS函数,速度更快,不需要“数组input”,关键的是,可以应用到整个列而没有显着的缺点。

基于这个,你可以在G2使用这个公式拷贝下来

=IF(A2="","",IF(COUNTIFS(A:A,A2,F:F,">"&F2)>0,"No",1))

这应该给你相同的结果,而不必担心数据的大小

你应该可以使用INDIRECT ,它将单元格地址作为一个string。

所以用$A$2:$A$1719replace$A$2:$A$1719

 INDIRECT("$A$2:$A$" & (MATCH(TRUE, INDEX(ISBLANK('SourceQuery'!A1:A2001), 0, 0), 0)-1)) 

并用$F$2:$F$1719replace$F$2:$F$1719

 INDIRECT("$F$2:$F$" & (MATCH(TRUE, INDEX(ISBLANK('SourceQuery'!A1:A2001), 0, 0), 0)-1)) 

最终的输出应该是这样的:

 {=IF(A2="","",IF(F2=MAX((INDIRECT("$A$2:$A$" & (MATCH(TRUE, INDEX(ISBLANK('SourceQuery'!A1:A2001), 0, 0), 0)-1))=A2)*(INDIRECT("$F$2:$F$" & (MATCH(TRUE, INDEX(ISBLANK('SourceQuery'!A1:A2001), 0, 0), 0)-1)))),N(1),"No"))}