我希望每个小组的格言日期在一个单独的列中:
这是我的数据:
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)"))}
但它并没有给我我想要的东西。任何小费都非常感谢。
答案 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]]];