在Excel中自动执行帐户对帐

时间:2012-10-22 12:09:43

标签: excel vba excel-vba excel-2007

我有一个有三列的电子表格。第一列包含人名。第二列包含日期。第三栏包含收到的金额和为该日期支付的发票。

例如:

Name  date         amount
abc   1-jan-2012   2000 usd
abc   2-jan-2012   (1500) usd
abc   3-jan-2012   2000 usd
abc   3-jan-2012   2000 usd
abc   3-jan-2012   (3500) usd

我试图抵消收到的付款(负值)的发票(正值)。如果我使用lifo应用程序,那么第一个条目的net_value将是500美元。第二个条目的净值将为零。

任何人都可以建议一种自动化练习的方法。我已经写了一份if语句但是当付款超过发票时(条件是客户收到预付款),条件不成立

提前感谢。

这是决赛桌的样子

NAME    DATE    AMOUNT  NET VALUE
abc 1-Jan-12     (4,910.00)  (4,910.00)
abc 2-Jan-12     3,674.00    (26.00)
abc 16-Jan-12    1,777.00    -   
abc 17-Jan-12    (5,477.00)  -   
abc 22-Mar-12    258.00      258.00 
abc 31-Mar-12    5,502.00    1,465.00 
abc 7-May-12     3,986.00    -   
abc 20-May-12    5,238.00    -   
abc 23-May-12    (6,861.00)  -   
abc 4-Jul-12     (6,400.00)  -   
abc 9-Aug-12     2,238.00    2,238.00 
abc 21-Aug-12    4,855.00    2,456.00 
abc 26-Aug-12    (2,399.00)  -   
abc 9-Sep-12     3,938.00    3,938.00 

对不起那些混乱......

2 个答案:

答案 0 :(得分:0)

假设您将值列为实际货币金额,而不是示例中的文字类型,则可以使用SUMIF来保留帐户的累计总数。

D2中的

=SUMIF($A$2:A2,A2,$C$2:C2)

并将其复制下来。它将显示帐户状态的运行总计,还会记录与A列中的名称相关的项目,而不是所有名称。

对于您的示例,结果如下:

Name date      amount    Running Total
abc  1-Jan-12  $2,000    2000
abc  2-Jan-12  ($1,500)  500
abc  3-Jan-12  $2,000    2500
abc  3-Jan-12  $2,000    4500
abc  3-Jan-12  ($3,500)  1000

LIFO表格的反转格式 - 您将第一个公式放在最后一个单元格(示例中为D6)

=SUMIF(A6:$A$6,A6,C6:$C$6)

并向上复制,结果如下:

Name date      amount    Running Total
abc  3-Jan-12  ($3,500)  1000
abc  3-Jan-12  $2,000    4500
abc  3-Jan-12  $2,000    2500
abc  2-Jan-12  ($1,500)  500
abc  1-Jan-12  $2,000    2000

总数由该行及以下的金额组成。

答案 1 :(得分:0)

您想要平衡每张发票吗?如果是这样,您将需要一张包含所有发票的单独表格,然后可以为每个发票名称/ ID计算总余额/余额。

我可能只是使用我将在workbook_change上刷新的数据透视表: Eg3

至少我会如何为小规模的Excel协调项目做这件事。希望能帮助到你。祝你好运。

您可以这样做的另一种方法 - 要创建唯一发票列表,您可以使用通过ctrl + shift +输入的此数组公式输入:

=IFERROR(INDEX($A$2:$A$20, MATCH(0, COUNTIF($E$1:E1, $A$2:$A$20), 0)),"")

Eg1

然后,您只需对每个发票ID执行SUMIF:

=SUMIF($A$2:$A$22,E2,$C$2:$C$22)

Eg2