Sumproduct 从不同月份列中的最旧月份减去总金额

Sumproduct subtract total amount from oldest month in different month columns

我有 4 个不同的数据库列

╔════╦════════════╦═════════╦═════════════╦═════════════╗
║    ║     A      ║    B    ║      C      ║      D      ║
╠════╬════════════╬═════════╬═════════════╬═════════════╣
║  1 ║ Date       ║ Party   ║ Debit       ║ Credit      ║
║  2 ║ 25-12-2019 ║ John    ║  50,000     ║             ║
║  3 ║ 27-12-2019 ║ Neil    ║  50,000     ║             ║
║  4 ║ 29-12-2019 ║ John    ║  1,00,000   ║             ║
║  5 ║ 01-Jan     ║ Neil    ║  50,000     ║             ║
║  6 ║ 05-Jan     ║ John    ║  8,00,000   ║             ║
║  7 ║ 08-Jan     ║ John    ║  70,000     ║             ║
║  8 ║ 28-Jan     ║ Neil    ║  20,000     ║             ║
║  9 ║ 02-Feb     ║ John    ║  30,000     ║             ║
║ 10 ║ 15-Feb     ║ Neil    ║  19,000     ║             ║
║ 11 ║ 27-Feb     ║ John    ║  21,000     ║             ║
║ 12 ║ 04-Mar     ║ John    ║  22,000     ║             ║
║ 13 ║ 08-Mar     ║ Neil    ║  88,000     ║             ║
║ 14 ║ 09-Mar     ║ John    ║  6,00,000   ║             ║
║ 15 ║ 05-Apr     ║ John    ║  7,05,000   ║             ║
║ 16 ║ 21-Apr     ║ Rebbika ║  25,00,000  ║             ║
║ 17 ║ 05-May     ║ John    ║             ║  7,00,000   ║
║ 18 ║ 07-May     ║ Neil    ║             ║  5,00,000   ║
║ 19 ║ 19-May     ║ John    ║             ║  1,00,000   ║
║ 20 ║ 21-May     ║ Rebbika ║             ║  10,00,000  ║
╚════╩════════════╩═════════╩═════════════╩═════════════╝ 

这是结果table(这实际上是每个月余额的试用

╔═══╦═════════╦════════╦════════╦═══════╦════════╦═════════╗
║   ║    E    ║   F    ║   G    ║   H   ║   I    ║    J    ║
╠═══╬═════════╬════════╬════════╬═══════╬════════╬═════════╣
║ 1 ║ Party   ║ Dec-19 ║ Jan-20 ║ Feb-20║ Mar-20 ║ Apr-20  ║
║ 2 ║ John    ║ -      ║ 220000 ║ 51000 ║ 622000 ║ 705000  ║
║ 3 ║ Neil    ║ 10000  ║ 70000  ║ 19000 ║ 88000  ║ 0       ║
║ 4 ║ Rebbika ║ -      ║ -      ║ -     ║ -      ║ 1500000 ║
╚═══╩═════════╩════════╩════════╩═══════╩════════╩═════════╝

这是我在 E2 到 J4 中使用的公式。 我复制的公式来自Cell I2

=IF(SUMPRODUCT(--(MONTH($A:$A)=12)+--(MONTH($A:$A)<=2),--($B:$B=F3),$C:$C)-SUMIF($B:$B,F3,$D:$D)>1,SUMPRODUCT(--(MONTH($A:$A)=3),--($B:$B=F3),$C:$C),IF(SUMPRODUCT(--(MONTH($A:$A)=3),--($B:$B=F3),$C:$C)-(SUMIF($B:$B,F3,$D:$D)-SUMPRODUCT(--(MONTH($A:$A)=12)+--(MONTH($A:$A)<=2),--($B:$B=F3),$C:$C))<1,"",SUMPRODUCT(--(MONTH($A:$A)=3),--($B:$B=F3),$C:$C)-(SUMIF($B:$B,F3,$D:$D)-SUMPRODUCT(--(MONTH($A:$A)=12)+--(MONTH($A:$A)<=2),--($B:$B=F3),$C:$C))))

例如:- 12 月付给 John 的总付款额为 150,000

收到的付款与月份或日期无关,它只是截至该日期我们收到的全部付款 所以,如果他付给我们120,000

12 月的余额=30,000,1 月-2 月-3 月...到期付款仍未完成

如果我们已收到总付款 1,021,000

然后它将清除 12 月的 150,000 和 1 月的 870,000,以及 2 月的 1,000,并将 Dec 列显示为 Nill,Jan=Nill,Feb 50,000

应从最早的结算月份中减去收到金额的总和

但是我使用的函数真的很乱,让 sheet 有点重,有没有更短更好的方法来执行这个任务而不使用 vba 代码但公式比我正在尝试的那个。它的 MS 2007

任何帮助将不胜感激

我终于明白了

=IFERROR(1/(1/ROUND(MAX(0,SUMIFS($C:$C,$B:$B,$E2,$A:$A,"<="&EOMONTH(F,0))-SUMIF($B:$B,$E2,$D:$D)-SUM($E2:E2)),0)),"-")

垂直和水平拖动它都很好。