Google sheets 需要在Google Sheets查询中从一行中的多个列返回最大值
我有Google Sheets数据,看起来像:Google sheets 需要在Google Sheets查询中从一行中的多个列返回最大值,google-sheets,filter,max,array-formulas,google-sheets-query,Google Sheets,Filter,Max,Array Formulas,Google Sheets Query,我有Google Sheets数据,看起来像: 12/01/2019 Tom blah 23 24 25 blah blah blah 12/01/2019 Mary blah 34 -2 44 blah blah blah 12/01/2019 Paul blah 23 2 blah blah blah 11/23/2019 Tom blah -23 -33 -2
12/01/2019 Tom blah 23 24 25 blah blah blah
12/01/2019 Mary blah 34 -2 44 blah blah blah
12/01/2019 Paul blah 23 2 blah blah blah
11/23/2019 Tom blah -23 -33 -2 blah blah blah
易于创建一个基于名称获取所有结果的查询。但我需要的是返回整行的所有额外数据,但只返回3个数字的最大值(如果最大值为负数,则返回零)——基本上类似于“选择A、B、C、MAX(D、E、F)”。因此,它将返回:
12/01/2019 Tom blah 25 blah blah blah
11/23/2019 Tom blah 0 blah blah blah
正如我所说,这里的示例数据在m66:u69范围内,请根据您的数据范围进行调整:
=array_constrain(sort(filter( {M66:O69,if(P66:P69>Q66:Q69,if(P66:P69>R66:R69,P66:P69,R66:R69),if(Q66:Q69>R66:R69,Q66:Q69,R66:R69)), S66:U69},N66:N69="Tom"),4,false),1,1000)
这里是另一个公式,其中没有数组_约束和排序,但将根据需要提供结果,2行,最多三列,如果为负,则为0:
=filter( {M66:O69,if(P66:P69>Q66:Q69,if(P66:P69>R66:R69,P66:P69*((SIGN(P66:P69)+1)/2),R66:R69*((SIGN(R66:R69)+1)/2)),
if(Q66:Q69>R66:R69,Q66:Q69*((SIGN(Q66:Q69)+1)/2),R66:R69*((SIGN(R66:R69)+1)/2))), S66:U69},N66:N69="Tom")
说明:
1.{“a”;“b”…}将以行形式给出数组
要创建每行的最大值,请执行以下操作:
=ARRAYFORMULA(QUERY(TRANSPOSE(QUERY(TRANSPOSE(IF(D2:F<0, 0, D2:F)),
"select "&TEXTJOIN(",", 1, IF(LEN(A2:A),
"max(Col"&ROW(A2:A)-ROW(A2)+1&")", )))),
"select Col2"))
=ARRAYFORMULA(QUERY)(TRANSPOSE)(QUERY)(TRANSPOSE)(D2:FDo)你是指按名称排序,还是按名称筛选?你可以使用filter、sort和iffilter、sort和IF?我可以通过“Select*其中B包含‘Tom’”(这将返回两行)来获取所需的行。但我希望它只返回一列,最大值为3列(D/E/F)-希望有意义。我想我应该说-我希望它返回行中的所有数据,除了这三列(仅返回最大值),在我的回答中我有点困惑,为什么它不返回两行-一行是11/23,一行是12/01?对不起,我在这方面还是比较新的…我将添加关于公式的解释哇,这是胡说八道。:)非常感谢你的帮助!似乎我需要一个月的时间来弄清楚它在做什么。
=ARRAYFORMULA(QUERY(TO_TEXT({FILTER(A2:C, A2:A<>""),
QUERY(TRANSPOSE(QUERY(TRANSPOSE(IF(D2:F<0, 0, D2:F)),
"select "&TEXTJOIN(",", 1, IF(LEN(A2:A),
"max(Col"&ROW(A2:A)-ROW(A2)+1&")", )))),
"select Col2"), FILTER(G2:I, A2:A<>"")}),
"where Col2 = 'Tom'", 0))