Google sheets 第1列的最大值,其中第2列的值与某些条件匹配

Google sheets 第1列的最大值,其中第2列的值与某些条件匹配,google-sheets,Google Sheets,假设我的表格中有以下内容: A | B | desired_output ---------------------------- 1 | 10 | 1 | 0 2 | 20 | 7 | 0 3 | 30 | 3 | 0 4 | 20 | 2 | 0 5 | 30 | 5 | 1 我想为所需的_输出列中的每一个单元格找到一个公式,该列查看B1:B5的最大值,但只针对a=maxA1:A5的行 如果这还不清楚,我试着换一种

假设我的表格中有以下内容:

     A   |  B  |  desired_output
   ----------------------------
1 |  10  |  1  |  0
2 |  20  |  7  |  0
3 |  30  |  3  |  0
4 |  20  |  2  |  0
5 |  30  |  5  |  1
我想为所需的_输出列中的每一个单元格找到一个公式,该列查看B1:B5的最大值,但只针对a=maxA1:A5的行

如果这还不清楚,我试着换一种说法:

for all the rows in A1:A5 that are equal to max(A1:A5) // so that's rows 3 and 5
    find the one which has the max value on B // so between B3 and B5, that's B5
        output 1 for this one, 0 for the other
我想说,如果有这样一个函数存在的话,会有一个where,比如=ifB=maxB1:B5,其中a=maxA1:A5,1,0,但我找不到怎么做

我可以用一个技巧在两列中完成:

     A   |  B  |  C  | D
   ----------------------------
1 |  10  |  1  |     |  0
2 |  20  |  7  |     |  0
3 |  30  |  3  |  3  |  0
4 |  20  |  2  |     |  0
5 |  30  |  5  |  5  |  1
Cn=ifAn=maxA$1:50亿澳元,Dn=ifCn=maxC$1:C$5,1,0


但我仍然无法在一个专栏中找到如何做到这一点

=--AND(A5=MAX($A$1:$A$5),B5=MAXIFS($B$1:$B$5,$A$1:$A$5,MAX($A$1:$A$5)))

那么以下内容如何:

=--AND(A5=MAX($A$1:$A$5),B5=MAXIFS($B$1:$B$5,$A$1:$A$5,MAX($A$1:$A$5)))

对于没有最大IFS的系统,将其放入C1并填充

=--(B1=MAX(INDEX(B$1:B$5-(A$1:A$5<>MAX(A$1:A$5))*1E+99, , )))

对于没有最大IFS的系统,将其放入C1并填充

=--(B1=MAX(INDEX(B$1:B$5-(A$1:A$5<>MAX(A$1:A$5))*1E+99, , )))
或更短:

=ARRAYFORMULA(IF(A:A<>"",N(A:A&"×"&B:B=JOIN("×",SORTN(A:B,1,,1,0,2,0))),)) 
或更短:

=ARRAYFORMULA(IF(A:A<>"",N(A:A&"×"&B:B=JOIN("×",SORTN(A:B,1,,1,0,2,0))),)) 


所以你希望max的max为1,否则为零,对吗?什么版本的Excel?在新版本中有一个MAXIFS。我实际上在谷歌工作表上,但我想答案在excel中是一样的。谷歌床单有maxifs@François M.问得好,你现在有了一些很好的解决方案,但我想知道如果人们想搜索,标题是否可以改进?例如“标记一列的最大值,条件是另一列为最大值”,但不确定如何最好地表达它。更改了它,您认为如何?所以您希望最大值的最大值为1,否则为零,对吗?什么版本的Excel?在新版本中有一个MAXIFS。我实际上在谷歌工作表上,但我想答案在excel中是一样的。谷歌床单有maxifs@François M.问得好,你现在有了一些很好的解决方案,但我想知道如果人们想搜索,标题是否可以改进?比如“标记一列的最大值,条件是另一列为最大值”,但不确定如何最好地表达它。更改了它,你觉得怎么样?这很聪明,尽管有点脏!这很聪明,虽然有点脏!伟大的见解是,OP实际上只是说“先按A降序排序,然后按B降序排序,然后找到最上面记录的匹配项”。我想还有其他可能更短的选项来实现它,例如=ArrayFormulaifA:A=,-A:A&&&&B:B=JOIN×,sortnA:B,1,1,false,2,false,false或=ArrayFormulaifA:A,-A:A&&&&B:B=JOIN×,sortnA:B,1,1,false,2,false,-我没想到你可以在if语句中加一个逗号,得到一个空字符串!它在Excel中不是这样工作的。@TomSharpe nice one。如果我们玩短游戏:=ARRAYFORMULAIFA:A,-A:A&&&&&B:B=JOIN×,SORTNA:B,1,1,0,2,0,或者甚至=ARRAYFORMULAIFA:A,-A:A&B:B=JOIN,SORTNA:B,1,1,0,2,0,绝对-尽管你确实需要x,因为最后一个不能区分313和313。@TomSharpe是的,但是,至少让我们用N而不是-,来保存一个字符的位置:很好的理解,OP实际上只是在说“按A降序排序,然后按B降序排序,并找到最上面记录的匹配项”。我想还有其他可能更短的选项来实现它,例如=ArrayFormulaifA:A=,-A:A&&&&B:B=JOIN×,sortnA:B,1,1,false,2,false,false或=ArrayFormulaifA:A,-A:A&&&&B:B=JOIN×,sortnA:B,1,1,false,2,false,-我没想到你可以在if语句中加一个逗号,得到一个空字符串!它在Excel中不是这样工作的。@TomSharpe nice one。如果我们玩短游戏:=ARRAYFORMULAIFA:A,-A:A&&&&&B:B=JOIN×,SORTNA:B,1,1,0,2,0,或者甚至=ARRAYFORMULAIFA:A,-A:A&B:B=JOIN,SORTNA:B,1,1,0,2,0,绝对-尽管你确实需要x,因为最后一个不能区分313和313。@TomSharpe是的,但至少让我们用N而不是-,保存一个字符位置: