使用 Google 工作表中的 arrayformula() 在每一行上查找 min() 值

Finding a min() value on each row using an arrayformula() within Google Sheets

我有点陷入困境 sheet 我一直在努力,我正在寻找一些澄清。出于某种原因,我多年来一直使用的旧帐户不见了:(,我深表歉意。

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

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

=MIN( IF(E124 > 0, E124*$E), IF(F124 > 0, F124*$F), 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")

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

我试过写 =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), IF(F8:F > 0, F8:F*$F), IF(G8:G > 0, G124) ),)

如果有办法做到这一点,我将不胜感激

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

在单元格 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)))

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

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