【问题标题】:Invoice List Running Balance based on date and Account基于日期和帐户的发票清单运行余额
【发布时间】:2011-08-18 03:51:10
【问题描述】:

我正在使用 Excel 2010 并制作了一个用户窗体,它使用 ListBox 控件显示来自工作表的完整发票列表(“InvoiceListIncome”),工作表有 13 列和数千行,下面的示例图像; 我遇到的问题是 Balance Row Range("InvoiceListIncome_Balance")" 显示每个 Invoice 个人的余额,我需要的是从第一张发票 Range("InvoiceListIncome_Date") 开始的运行余额,因此每次交易它加起来该帐户的当前发票和所有以前的发票。

我目前使用的宏是;

Range("InvoiceListIncome_Balance").FormulaR1C1 = "=SUM(RC[-1])-SUM(RC[-2])"

这只是从 G 列中的项目价格中减去 F 列中支付的费用,但我似乎无法弄清楚如何按日期添加所有以前的余额,我可以将其与客户帐户的完整范围相加作为条件或只是活动行。

这几天我一直在绕圈子试图解决这个问题,任何帮助将不胜感激,谢谢。

这是我需要的一个例子;

【问题讨论】:

  • 你能试着用一些更具体的细节来解释吗?这听起来像是我可以提供帮助的事情,只要朝着正确的方向前进。
  • 谢谢罗尼,我已经添加了我需要的示例。

标签: excel excel-formula vba


【解决方案1】:

假设您在 A、D 和 E 列中分别有 Account、Price 和 Paid,并且您的第一行数据位于第 2 行,请在第 2 行尝试以下公式:

=SUMIF($A$2:$A2,$A2,$E$2:$E2)-SUMIF($A$2:$A2,$A2,$D$2:$D2)

将公式复制到列中。这假设您的数据按照您显示的时间顺序递增排序。

另外,如果这个公式有效,你在你想要的列底部的第 4 行有错误的符号????

【讨论】:

  • 非常感谢 Ronny,工作完美!刚刚用 A、E 和 F 替换了 A、D 和 E,它完全按照我的设想工作,过去我已经完成了我的工作几周试图解决这个问题,再次感谢您的帮助,非常感谢! ;)
【解决方案2】:

您需要一个运行总计,因此在计算第 n 行的余额时,您希望合并第 (n-1) 行的余额。

根据您的第一张图片,进行以下更改:

  • G2 中的公式:=F2-E2
  • G3 中的公式:=G2+F3-E3
  • 将公式从 G3 复制到列表末尾;最后一个值是您的当前余额

编辑

对不起...我似乎忽略了帐户中断的情况。好吧,这让它变得更加容易,因为您只需要一个公式就可以了....

要打破客户(假设客户列已排序),您将使用以下公式

  • G2 中的公式:=IF(A2=A1,G1+F2-E2,F2-E2)
  • 将公式从 G2 复制到列表末尾

(如果 this.account = previous.account 然后计算.running.total else create.new.balance)

只要您的第一个客户的名字是“帐户”,这将起作用 :-)

【讨论】:

  • 这是行不通的,因为它假设只有 1 个客户并将所有发票相加而不是每个客户。
  • 据我所见,它仍然单独添加余额,而不是将该帐户以前的所有发票相加,我不确定如何或在哪里添加您在底部提供的代码; (如果 this.account = previous.account 然后calculate.running.total else create.new.balance)非常感谢您到目前为止的帮助;)
  • 底部的代码只是说明了 =IF(...) 的作用——你不要在任何地方输入它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-24
相关资源
最近更新 更多