根据日期和类别汇总费用和收入

时间:2013-10-02 15:15:16

标签: excel excel-vba vba

好的,让我们试着尽可能简单地解释一下。我有一张excel工作簿,里面有两张纸。第一个包含您银行帐户中的所有交易。

  

注释;日期;量;分类

     

亚马逊; 2013年1月17日; €33,24;图书

第二张表是多级表。基本上,列是月份(数字和名称),如1/1月,2月/ 2月。行是类别。

  

类别;一月/费用;一月/收入; 2月/费用; 2月/收入

     

丛书; €33,24; €0; ....

总和的条件是a)类别,b)小于零(费用)或大于零(收入)的金额,c)大于当月第一天的日期和d)较少的日期比下个月的第一天。

我尝试使用SUMIFS或IF然后使用SUM。但是我在添加日期约束时遇到了问题。你可以download the spreadsheet here

1 个答案:

答案 0 :(得分:0)

这是 C5

的公式
  !!

= SUMIFS(Umsätze$ C:$ C,Umsätze$ F:$ F,Übersicht$ B5,Umsätze$ B:$ B, “> =” &安培; DATE(Übersicht$ A $ 1, !ÜbersichtC $ 2,1),Umsätze$ B:$ B, “&LT =” &安培; EOMONTH(!DATE(Übersicht$ A $ 1,ÜbersichtC $ 2,1),0),Umsätze$ C:$ C,IF(C $ 4 = “收入”, “大于0”, “℃,”))

由于您在第2行合并了单元格,因此无法轻松复制。首选设置是第2行,其中月号没有合并的单元格。这会使行看起来像这样:

1   1   2   2   3   3   4   ....

然后,您可以在所需的所有行/列中复制此公式。

要检查日期,SUMIF中使用的比较是

Umsätze!$B:$B,">="&DATE(Übersicht!$A$1,Übersicht!C$2,1)

表示大于或等于当月1日的日期,

Umsätze!$B:$B,"<="&EOMONTH(DATE(Übersicht!$A$1,Übersicht!C$2,1),0)

等于或小于当月结束的日期。

使用$符号将确保在复制单元格时引用相应的单元格 - Umsätze工作表的列没有更改,并确保名称仅更改行(Übersicht!$B5)和月份编号仅改变列(Übersicht!C$2),将年份固定到Übersicht!$A$1

的位置