匹配行项目以进行银行对帐

时间:2019-02-11 15:40:35

标签: excel vba

我正在准备银行对帐文件,以使负值与正值匹配。。在下表中,有一些负值需要与正值对帐/匹配。例如A4 (5076)是负值A2+A6+A8 (-5076)的总和,两者相互对帐并为零。我想要将所有正值与负值调和的Excel编码。请帮助

A      B
1    -5425
2    -4125
3    -2632
4     5076
5    -222
6    -906
7     8279
8    -45
9    -254
10   -542

1 个答案:

答案 0 :(得分:0)

我认为这将太大而无法放入评论中,并且可能会变成答案,因此我将其发布为答案。

我在开始时看到了几个问题:

  1. 给定对帐(总和为0)是否可以限制多少行?其中只有一个会是肯定的,还是{-2,-2,+ 1,+ 3}是有效的解决办法?
  2. 所有总是会协调吗?或者,换句话说,同样的问题,当剩余行时,您希望系统做什么?它应该崩溃吗?
  3. 对帐组的分配方式是否重要?考虑以下示例:
{(a, +5),
 (b, +4),
 (c, -1),
 (d, -1),
 (e, -2),
 (f, -2),
 (g, -3)}

很明显,可以将其调和为

[{(a,+5), (c,-1), (d,-1), (g,-3)},
 {(b,+4), (e,-2), (f,-2)        }]

或为

[{(a,+5), (c,-1), (e,-2), (f,-2)},
 {(b,+4), (d,-1), (g,-3)        }]

但不清楚区别是否重要

最琐碎的情况是,如果对问题1的回答是“不,没有限制”,而对问题2的回答是“有效输入列表的所有行将始终协调一致”,那么对问题的回答#3是“没有关系”。
在这种情况下,允许作为包含所有行的单个对帐组。

假设这不是您想要的,则必须更清楚地阐明您想要的内容。

如果问题3的答案是看似等效的对帐组之间的差异确实重要,那么您的解决方案将必须考虑尚未显示的信息。尽管{(b,+4), (e,-2), (f,-2)}{(b,+4), (d,-1), (g,-3)}之间可能会有差异,但目前尚无任何方法可以使它们比另一种更好。

很可能您会遇到注释中指出的计算限制。我不认为该任务是不可能,但我会强烈建议使用Excel或VBA之外的其他方法。
很多人会尝试使用Python做到这一点,这很好。在我看来,Haskell会擅长这种事情。如果性能是一个问题,那么像C这样的低级语言虽然不一定会更快,但可能更易于优化。