第2列的值与某些条件匹配的第1列的最大值

时间:2019-03-03 17:59:09

标签: 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

我想为desired_output列中的每个单元格查找一个公式,该公式查看B1:B5的最大值,但仅适用于A = max(A1: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,像= if(B=(max(B1:B5) where A = max(A1: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 = if(An=max(A$1:A$5),Bn,"")Dn = if(Cn = max(C$1:C$5), 1, 0)

但是我仍然找不到一列的方法

3 个答案:

答案 0 :(得分:2)

对于没有MAXIFS的系统,请将其放入C1并填写。

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

答案 1 :(得分:2)

=ARRAYFORMULA(IF(LEN(A1:A), IF(IFERROR(VLOOKUP(CONCAT(A1:A&"×", B1:B),
 JOIN("×", QUERY(A1:B, "order by A desc, B desc limit 1")), 1, 0), )<>"", 1, 0), ))

0

或更短:

=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))),))

答案 2 :(得分:1)

以下内容如何:

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

enter image description here