【问题标题】:Finding a min() value on each row using an arrayformula() within Google Sheets使用 Google 表格中的 arrayformula() 在每一行上查找 min() 值
【发布时间】:2020-06-01 00:42:20
【问题描述】:

我对我一直在处理的一张纸有点不知所措,我正在寻找一些澄清。由于某种原因,我的旧帐户已经消失了多年 :(,我很抱歉。

我正在尝试为我添加数据的每一行获取一个最小值。有 2 列我需要先转换数据,然后为每行的所有 3 列找到最小值。

我尝试了多种方法,只有输入我为每一行创建的公式才能完美运行。 例如:

=MIN( IF(E124 > 0, E124*$E$6), IF(F124 > 0, F124*$F$6), IF(G124 > 0, G124) )

我尝试使用其他示例,但是我不熟悉 QUERY。试图在公式中进行简单的计算(添加)是令人困惑的。我尝试使用的示例:

=QUERY(TRANSPOSE(QUERY(TRANSPOSE(A1:C), 
 "select "&REGEXREPLACE(JOIN( , ARRAYFORMULA(IF(LEN(A1:A&B1:B&C1:C), 
 "min(Col"&ROW(A1:A)-ROW(A1)+1&"),", ""))), ".\z", "")&"")),
 "select Col2")

添加时有多个问题。我想忽略空单元格和标题等文本。它不会覆盖文本,也不会执行(给我一个关于覆盖值的错误)。

我试过写=arrayformula,但不喜欢计算最小值。它确实对行进行计算。

=ArrayFormula(IF(ISBLANK({E8:E;F8:8;G8:8}), "", added my formula here))

下面是我已经工作了几个小时的东西,我认为问题在于选择导致问题的 MIN 函数内的范围

=arrayformula(IF(LEN(E8:G)<>0, MIN( IF(E8:E > 0, E8:E*$E$6), IF(F8:F > 0, F8:F*$F$6), IF(G8:G > 0, G124) ),)

如果有办法做到这一点,我真的很感激一些帮助

LINK:我制作的示例的可查看版本,因为我的实际工作表超过 500 行。 https://docs.google.com/spreadsheets/d/133LJHY3s45ZyxWq0PWew1KikbyNE4MTt-wOeWHBrZY0/edit?usp=sharing

【问题讨论】:

  • 在您共享的示例中,每行只有一个值,欧元、英国或美元。会一直这样吗?如果是这样,答案就简单多了。如果没有,您能否更改示例数据,使其包含一些具有多个值的行?
  • 不,每行的所有三列都可以有一个值。我只需要转换后每列的最低值。

标签: google-sheets google-sheets-formula min array-formulas google-sheets-query


【解决方案1】:

在单元格 O3 中尝试一下

=ArrayFormula(TO_DOLLARS(index(transpose(query(transpose(E3:G18*{M5, N5, 1}),"select "&join("),","max(Col"&row(indirect("A3:A18"))-2)&")")),,2)))

看看这是否能提供预期的输出?

如果您在 E:G 列中有多个值,您可以尝试

=ArrayFormula(TO_DOLLARS(index(transpose(query(transpose(if(ISNUMBER(E3:G18), E3:G18, 99^99)*{M5, N5, 1}),"select "&join("),","min(Col"&row(indirect("A3:A18"))-2)&")")),,2)))

【讨论】:

    【解决方案2】:

    尝试(适用于所有行直到底部):

    =ARRAYFORMULA(TEXT(SUBSTITUTE(QUERY(TRANSPOSE(QUERY(TRANSPOSE(
     IF(E3:G<>"", {E3:E*M5, F3:F*N5, G3:G}, 999^99)),
     "select "&TEXTJOIN(",", 1,
     "min(Col"&ROW(A3:A)-ROW(A3)+1&")")&"")),
     "select Col2", 0), 999^99, ), "$#,###.00"))
    

    【讨论】:

    • 它工作得很好,但是,当我有多个框,每个框都有标题时,它会给我一个覆盖错误。此外,我的普通表从第 8 行而不是第 3 行开始。所以我更改了这些值,假设没有区别。 =ARRAYFORMULA(TEXT(SUBSTITUTE(QUERY(TRANSPOSE(QUERY(TRANSPOSE( IF(E8:G&lt;&gt;"", {E8:E*$E$6, F8:F*$F$6, G8:G}, 999^99)), "select "&amp;TEXTJOIN(",", 1, "min(Col"&amp;ROW(A8:A)-ROW(A8)+1&amp;")")&amp;"")), "select Col2", 0), 999^99, ), "$#,###.00")) 如果我希望数字没有小数或不同的货币,只需删除 .00 并更改符号?还是使用CF?
    • 我只测试了一个盒子,它完美无瑕。我只是希望它跳过空行,以及其中包含文本的行。基本上,如果我重复我的示例两次,我需要继续并忽略标题等。
    • 它实际上是公式列 H3:H 中的标题,我需要忽略该标题
    猜你喜欢
    • 2021-08-19
    • 2020-05-23
    • 1970-01-01
    • 2019-04-09
    • 2021-05-23
    • 2015-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多