从按名称分组的范围(多个工作表)中获取最大值

时间:2017-11-16 10:58:51

标签: google-sheets

我有3张格式完全相同的纸张

Sheet 1中

A           B          C         D
George      10         2         8
Nick        15         89        0
Mike        13         1         50
Lucas       9         -5         12

Sheet 2中

A           B          C         D
Nick        1          9         5
Mike        1          10        6
George      11         22        5
Lucas       10         5         2
Panos       55         0         1

表Sheet 3

A            B         C         D
Panos        0         9         1
George       1         2         5
Nick         7         2         1
Lucas        1         5         1

我想查询范围{'Sheet1'!A1:D5; 'Sheet2的' A1:D5; '表Sheet 3'!A1:D5}

获得类似MAX(Col2:Col4)Group By Col1

的内容

会返回类似的内容:

George 22
Nick   89
Mike   50
Lucas  12
Panos  55 

我试过了:

=sort(query({'Sheet1'!A1:D5; 'Sheet2'!A1:D5;'Sheet3'!A1:D5}, "select Col1, MAX(Col2:Col4) Group by Col1 Label MAX(Col2:Col4) '' " ),2, FALSE) 

=sort(query({'Sheet1'!A1:D5; 'Sheet2'!A1:D5;'Sheet3'!A1:D5}, "select Col1, MAX(MAX(Col2),MAX(Col3), MAX(Col4)) Group by Col1 " ),2, FALSE) 

两者都不起作用。有什么想法吗?

3 个答案:

答案 0 :(得分:3)

请尝试:

=query(sort(transpose(query({Sheet1!A1:D5;Sheet2!A1:D5;Sheet3!A1:D5},"select max(Col2), max(Col3), max(Col4) pivot Col1"))),"select Col1, max(Col2) group by Col1 label(Col1) ''")

答案 1 :(得分:1)

总结一下您的问题,需要在右侧和右侧的列中找到MAX。因此,QUERY没有这样的2D功能。

因此,在每张表格中使用辅助列E& F:

B& C的最大值:

E2:

=ARRAYFORMULA(IF(B2:B>C2:C,B2:B,C2:C))

B,C& D的最大值:

F2:

=ARRAYFORMULA(IF(D2:D>E2:E,D2:D,E2:E))    

现在,使用查询:

查询:

=ARRAYFORMULA(QUERY({Sheet1!A2:F;Sheet2!A2:F;Sheet3!A2:F}, "Select Col1,max(Col5) where Col1 is not null group by Col1 order by max(Col5) desc"))

注意:

  • 更改范围以适合
  • 您也可以在没有MAX
  • 的情况下为每一行使用ARRAYFORMULA
  • 理论上,对于单个单元格解决方案,您可以输入此formula以查找最多3个实数

答案 2 :(得分:0)

另一种方法可能更简单但需要两次查询

=sort(unique(({Sheet1!A1:A5;Sheet2!A1:A5;Sheet3!A1:A5})))

获取以(比如说)F2

开头的名字

然后这将获得(例如)G2中的每个名称的最大值并下拉

max(query({Sheet1!A$1:D$5;Sheet2!A$1:D$5;Sheet3!A$1:D$5},"select max(Col2),max(Col3),max(Col4) where Col1='"&F2&"'"))