同一行区域内各列之间的扩展减法

同一行区域内各列之间的扩展减法

我想计算交易价值,因此我的意思是我在“A”列中有不同的帐户,并且对于每笔交易我都有一个“B”列。

交易显示交易后两个账户的新价值。

我需要一个通用函数来计算“交易价值”,类似于 Ai - Bi ... Ai+1 - Bi+1 ...

或者作为一个函数(伪代码),如下所示:

int res = 0; foreach (int i = 1; i < 4 (rows); i++) { if (Bi != null && Ai > Bi) { res = Ai - Bi } }

例子:

          A                B (transactions)
    ------------------------------------------------------------
1   |  $ 100     |                                             |
    ------------------------------------------------------------
2   |            |                                             | 
    ------------------------------------------------------------
3   |  $ 200     | $ 150 (now, after transaction)              |  
    ------------------------------------------------------------
4   |  $ 300     | $ 350 (now, after transaction)              | 
    ------------------------------------------------------------
5   | sum(A1:A4) | (A1-B1)+(A2-B2)+(A3-B3)… (transaction value)|
    ------------------------------------------------------------
=>  | $ 600      | $ 50                                        |
    ------------------------------------------------------------

因此我将 50 美元从账户 A3 转入 A4。

我主要需要的是这背后的逻辑

很感谢任何形式的帮助 :)

答案1

两个公式:

总和乘积:

=SUMPRODUCT((B1:B4<A1:A4)*(B1:B4<>"")*(A1:A4-B1:B4))

或者这个数组公式:

=SUM(IF((B1:B4<A1:A4)*(B1:B4<>""),(A1:A4-B1:B4)))

作为数组公式,退出编辑模式时需要使用 Ctrl-Shift-Enter 而不是 Enter 进行确认。如果操作正确,Excel 会将{}公式放在一边。

如果单元格中填充了返回 a 的公式"",则使用第二个,因为空字符串会导致 SUMPRODUCT 公式出错。如果它们确实是空的,则两者都可以工作。

在此处输入图片描述

相关内容