数组公式:嵌套ifs和同行计算
Array formulas: nested ifs and same row calculation
有 2 个输入:A1
和 B1
。
在D列中,对象A有多种类型。
在B列中,有很多类型的对象B.
公式的作用如下:
如果(D2 是 'A1' 并且 G2 是 'B1')那么,如果(E2 大于 F2),减去 E2 和 F2(在这个例子中是 5 - 4),否则减去 F2 到 E2(比如第 12 行发生了什么)。
如果没有匹配项,什么也不做,直接跳过该行。
我想用数组公式来做 (Ctrl+Shift+Enter), 所以最后它会把所有的东西加起来。
在此示例中,输出将为 -1,因为 sum(and(5-4)(2-4)) .
到目前为止,我有以下内容:
{=SUM(IF((D2:D12="A1")+(G2:G12="B1");E2:E12-F2:F12;0))}
但它不能正常工作,因为我不确定 Excel 如何读取减法部分。我希望能够减去找到组合的行的值。
如果您只需要为所有匹配项将 E 列减去 F 列,那么请考虑以下数组公式:
=SUM((D2:D12=$B)*(G2:G12=$B)*(E2:E12-F2:F12))
(如果需要,可以通过额外检查减去的内容来更新)
这将 SUM
所有包含与您的输入匹配的减法(E 列)-(F 列)。
细分如下:
D2:D12=$B
和 G2:G12=$B
将生成包含 1 表示匹配和 0 表示不匹配的数组:
{A1,A2,A3, -,A1, -, -,A4,A5,A1,A1} {B1, -,B1, -,B4, -, -,B6,B5,B2,B1}
V V V V V V V
{1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1 } {1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1 }
E2:E12-F2:F12
将生成由相减值组成的第三个数组:
{5, 5, 3, 1, 3, 3, 7, 3, 9, 7, 4}
-{4, 3, 4, 5, 6, 5, 9, 6, 7, 8, 2}
={1, 2,-1,-4,-3,-2,-2,-3, 2,-1, 2}
将它们全部相乘将得到如下结果:
{1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1}
x{1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}
x{1, 2,-1,-4,-3,-2,-2,-3, 2,-1, 2}
={1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2}
当然 SUM
会完成它的工作:
SUM({1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2}) = 3
如果我正确理解了您的要求,那么您的回答将是:
=SUM((D2:D12="A1")*(G2:G12="B1")*ABS(E2:E12-F2:F12))
请记住,TRUE
到 Excel 与数字 1 相同,FALSE
是 0。
因此,如果我的公式中有任何 D 或 G 列不匹配的行将乘以 0。
你关于 E 和 F 列的规则对我来说也像
大数减去小数
这与:
|4-5|=1
或Excel公式表示法:
ABS(4-5)
有 2 个输入:A1
和 B1
。
在D列中,对象A有多种类型。 在B列中,有很多类型的对象B.
公式的作用如下:
如果(D2 是 'A1' 并且 G2 是 'B1')那么,如果(E2 大于 F2),减去 E2 和 F2(在这个例子中是 5 - 4),否则减去 F2 到 E2(比如第 12 行发生了什么)。
如果没有匹配项,什么也不做,直接跳过该行。
我想用数组公式来做 (Ctrl+Shift+Enter), 所以最后它会把所有的东西加起来。
在此示例中,输出将为 -1,因为 sum(and(5-4)(2-4)) .
到目前为止,我有以下内容:
{=SUM(IF((D2:D12="A1")+(G2:G12="B1");E2:E12-F2:F12;0))}
但它不能正常工作,因为我不确定 Excel 如何读取减法部分。我希望能够减去找到组合的行的值。
如果您只需要为所有匹配项将 E 列减去 F 列,那么请考虑以下数组公式:
=SUM((D2:D12=$B)*(G2:G12=$B)*(E2:E12-F2:F12))
(如果需要,可以通过额外检查减去的内容来更新)
这将 SUM
所有包含与您的输入匹配的减法(E 列)-(F 列)。
细分如下:
D2:D12=$B
和 G2:G12=$B
将生成包含 1 表示匹配和 0 表示不匹配的数组:
{A1,A2,A3, -,A1, -, -,A4,A5,A1,A1} {B1, -,B1, -,B4, -, -,B6,B5,B2,B1}
V V V V V V V
{1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1 } {1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1 }
E2:E12-F2:F12
将生成由相减值组成的第三个数组:
{5, 5, 3, 1, 3, 3, 7, 3, 9, 7, 4}
-{4, 3, 4, 5, 6, 5, 9, 6, 7, 8, 2}
={1, 2,-1,-4,-3,-2,-2,-3, 2,-1, 2}
将它们全部相乘将得到如下结果:
{1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1}
x{1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}
x{1, 2,-1,-4,-3,-2,-2,-3, 2,-1, 2}
={1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2}
当然 SUM
会完成它的工作:
SUM({1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2}) = 3
如果我正确理解了您的要求,那么您的回答将是:
=SUM((D2:D12="A1")*(G2:G12="B1")*ABS(E2:E12-F2:F12))
请记住,TRUE
到 Excel 与数字 1 相同,FALSE
是 0。
因此,如果我的公式中有任何 D 或 G 列不匹配的行将乘以 0。
你关于 E 和 F 列的规则对我来说也像 大数减去小数 这与:
|4-5|=1
或Excel公式表示法:
ABS(4-5)