【问题标题】:Calculate monthly average from daily data without PivotTable从不使用数据透视表的每日数据计算月平均值
【发布时间】:2015-11-18 00:36:10
【问题描述】:

我的工作表包含两列:A 列包含dd/mm/yyyy 格式的日期,B 列包含每日数据。从每日数据中,我必须在没有数据透视表的情况下生成每个月的月平均值。有些日子根本不包含任何数据。我不能使用数据透视表,因为我必须在以后使用月平均值来识别每日数据中的异常值。

对于此示例,重要的是我不使用数据透视表,并且我可以生成列表中任何月份和年份的月平均数据。解决方案可以是 Excel 公式或 VBA。

【问题讨论】:

  • 看看=AVERAGE()-Function。
  • AverageIf()AverageIfs() 会起作用,因为它们允许您输入标准来确定要平均哪些值。

标签: excel excel-formula vba


【解决方案1】:

假设您在 D 列中有月份,在 E2 中输入此公式并复制到上个月

=AVERAGEIFS($B$1:$B$62,$A$1:$A$62,">="&D2,$A$1:$A$62,"<="&EOMONTH(D2,0))

【讨论】:

  • 很高兴这是您所需要的。如果您承认答案,我们将不胜感激,因为它将帮助我们保持网站更新,并且对于有相同问题的其他用户来说,这将是一个更好的参考。
【解决方案2】:

有些日子根本没有数据。

如果这意味着某些日期没有行,并且您想根据整月计算平均值,则可以使用以下公式:

继续 EEM 给出的示例

=SUMIFS($B$1:$B$62,$A$1:$A$62,">="&D2,$A$1:$A$62,"<="&EOMONTH(D2,0))/DAY(EOMONTH(D2,0))

【讨论】:

    【解决方案3】:

    如果每日数据包含一些#N/A,可以添加一个额外的条件来跳过非数字数据:

    =AVERAGEIFS($B$1:$B$62,$A$1:$A$62,">="&D2,$A$1:$A$62,"<="&EOMONTH(D2,0),$B$1:$B$62,"<10E69")
    

    【讨论】:

      【解决方案4】:

      给定一个日期,您可以计算该日期的月末和月初。假设任何给定的日期都在 E4 中:

      月底

      =EOMONTH(E4,0)
      

      本月的第一天

      =EOMONTH(EDATE(E4,-1),0)+1
      

      如果您在单元格 E4 中放置您想要查看的月份的任何日期,上述两个代码片段将为您提供该月的最后几天和第一天。 EDATE 允许您通过加减整数来更改月份。我们从当前月份取一个月,在单元格 E4 中的日期内找到,然后找到月末并在其中添加一个以成为下个月的第一天。它适用于任何日期。下面的示例显示了一个月内参考当月任何给定日期的平均成绩。

      Pic of the above Excel example

      =AVERAGEIFS(C2:C11, B2:B11,">=" & EOMONTH(EDATE(E4,-1),0)+1, B2:B11,"<=" &EOMONTH(E4,0), A2:A11, E2)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-18
        • 1970-01-01
        • 1970-01-01
        • 2023-03-06
        • 2016-12-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多