Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google sheets 需要在Google Sheets查询中从一行中的多个列返回最大值_Google Sheets_Filter_Max_Array Formulas_Google Sheets Query - Fatal编程技术网

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

我有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   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”…}将以行形式给出数组

  • {“a”,“b”…}将以列形式给出数组

  • {“a”;“b”、“c”、“d”}这是行和列的组合

  • if(exp1,if(exp2,…,if(exp3,…,if))这些是if的级联,用于从多个数据中获取一个数据

  • (符号(P66:P69)+1)/2将0表示负数,1表示正数

  • (P66:P69)*((符号(P66:P69)+1)/2)将给出0表示负数,与正数相同


  • 要创建每行的最大值,请执行以下操作:

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