【问题标题】:How to sum data in one column based on the same month in another column using macros如何使用宏根据另一列中的同一月份对一列中的数据求和
【发布时间】:2010-09-23 23:09:48
【问题描述】:

我在 excel 2007 中使用宏来完成我的工作。我正在处理许多数据,我需要根据同一月份对同一列中 2 行或更多行的数据求和。但是月份列表示为日期。

例如,我有一系列数据

A            B
2/10/2008    2
2/10/2008    3
4/10/2008    3
5/11/2008    4
5/11/2008    5

我希望结果显示在 C 列和 D 列中,如下所示

C            D
Oct/08       8
Nov/08       9

如果有人可以帮助我,我非常感谢。

问候,

提夫

【问题讨论】:

    标签: vba excel


    【解决方案1】:
        A           B       C   D       E       F
    1   10/ 1/2008  24106   1   Oct-08  24106   8
    2   10/31/2008  24106   7   Nov-08  24107   11
    3   11/ 1/2008  24107   8   Dec-08  24108   6
    4   11/30/2008  24107   3               
    5   12/ 1/2008  24108   2               
    6   12/ 2/2008  24108   4               
    
    B1 =MONTH(A1)+YEAR(A1)*12
    E1 =MONTH(D1)+YEAR(D1)*12
    F1 =SUMIF(B$1:B$6,CONCATENATE("=",E1),C$1:C$6)
    

    我必须克服两个问题来解决这个问题。首先,SUMIF 只能做直接比较,它不能在源位置上运行函数(范围函数除外,日期和时间函数不是),所以我不得不添加 B 列。 E 列是可选的,它可以作为 F 中公式的一部分来实现,但出于说明目的,我将其保持独立。其次,SUMIF 采用描述比较的字符串参数,因此我即时构建了必要的字符串(F1 为“=24106”)。

    【讨论】:

      【解决方案2】:

      使用数组函数: C1:

      =date(2008,small(month($A$1:$A$10),1),1)
      

      C2:

      =date(2008,small(month($A$1:$A$10),2),1)
      

      右键单击这些单元格并将它们格式化为 mmm/yy

      D1:

      =sum(if(month($C1)=month($A$1:$A$10),($B$1:$B$10),0))
      

      写完这个公式后,请确保按 ctrl-shift-enter。 然后根据需要复制粘贴下来。

      【讨论】:

        【解决方案3】:

        如果您不熟悉 VBA,我会先录制一个宏,同时使用“数据”菜单下的“小计”功能(即通过 Excel 的界面)做您想做的事情。

        录制宏后,您可以查看生成的 VBA 代码,并根据需要对其进行修改。

        【讨论】:

          【解决方案4】:

          这应该可以使用常规的 excel 公式来完成:

          • 提取日期的月份(某些月份函数)
          • 然后像这样进行条件求和(函数 sumwhen (?)):

            = SumWhen(A:B, ReferenceDate, B:B) (ReferenceDate = C2 C3 等)

          (我只有一个德语 excel,函数名也被翻译了,所以我的函数名可能是关闭的。也许有人可以检查英文 excel 并在必要时更新。)

          【讨论】:

            猜你喜欢
            • 2017-04-20
            • 2019-01-27
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-08-10
            • 1970-01-01
            相关资源
            最近更新 更多