如何查询Google表格中每个组的最大数量

时间:2017-07-27 01:38:20

标签: google-apps-script google-sheets

我希望每个小组的格言日期在一个单独的列中:

这是我的数据:

Customer  Date   

A          5/6/2017
A          11/7/2017
B          5/7/2017
A          9/7/2017
B          4/5/2017

这将是我理想的输出:

Customer   Date             MAX    

A          5/6/2017       11/7/2017
A          11/7/2017      11/7/2017   
B          5/7/2017       5/7/2017
A          9/7/2017       11/7/2017
B          4/5/2017       5/7/2017

计算每个组的最大日期(在此示例中为A组和B组)并返回该值。

我试过了这个查询

={"MAX";arrayformula (QUERY( A:B, "Select MAX(B) group by (A)"))}

但它并没有给我我想要的东西。任何小费都非常感谢。

1 个答案:

答案 0 :(得分:2)

如果您可以在列中复制公式,那么

=max(filter(B:B, A:A=A2))

将完成工作(显示C2的条目)。

我无法想出使用arrayformula生成所需结果的方法,但这里有一个custom function:它可以像=groupmax(A2:B100)一样使用

function groupmax(data) {
  var max = {};
  for (var i = 0; i < data.length; i++) {
    if (max[data[i][0]] == undefined || max[data[i][0]] < data[i][1]) {
      max[data[i][0]] = data[i][1];
    }
  }
  return data.map(function(r) {
    return [max[r[0]]];       // see below
  });
}

如果您希望该功能也返回原始数据,请将注释行更改为

    return [r[0], r[1], max[r[0]]];