【问题标题】:Average and Standard Deviation for every hour of measurements每小时测量的平均值和标准偏差
【发布时间】:2015-08-02 19:07:43
【问题描述】:

我有一个 Excel 文件,其中包含时间日志和每次进行的测量,该列表将日志保存数天。我想计算每小时测量值的平均值和标准差。

我的问题是每个小时测量的数量不同,所以我什至无法开始。

列表如下所示:

Time            measurement
28/8/2013 16:17 3831
28/8/2013 16:36 3668
28/8/2013 16:36 3685
28/8/2013 16:36 3676
28/8/2013 17:13 3671
28/8/2013 17:36 3669
28/8/2013 17:36 3664
28/8/2013 18:36 3654
28/8/2013 18:36 3661

我需要这样的输出:

  Hour             Average      Stdv
28/08/2013 16:00    3715    77.64448897
28/08/2013 17:00    3668    3.605551275
28/08/2013 18:00    3657.5  4.949747468

有什么想法吗?

【问题讨论】:

    标签: excel excel-formula average standard-deviation array-formulas


    【解决方案1】:

    使用Time 对ROWS 和measurement 在VALUES 进行两次透视,一次作为平均值,一次作为StdDev。通过选择年、月、日和小时对行进行分组。

    【讨论】:

    • 谢谢,但我不明白你的意思
    【解决方案2】:

    AVERAGEIFS function 可以轻松完成第一项任务。

    =AVERAGEIFS(B$2:B$10, A$2:A$10, ">="&D3, A$2:A$10, "<"&D3+TIME(1, 0, 0))
    

    第二个STDEV.S function 上的条件需要一个数组公式

    =STDEV.S(IF(A$2:A$10>=D3, IF(A$2:A$10<D3+TIME(1, 0, 0), B$2:B$10)))
    

    数组公式需要用 Ctrl+Shift+Enter↵ 完成。 尝试将全列引用减少到更接近代表实际数据范围的范围。数组公式以对数方式消耗计算周期,因此最好将引用范围缩小到最小。

          

    如果 A 列中的日期时间按升序排序,则此标准公式应该有效。

    =STDEV.S(INDEX(B:B, IFERROR(MATCH(D3-TIME(0, 0, 1), A:A)+1,2)):INDEX(B:B, MATCH(D3+TIME(0, 59, 59), A:A)))
    

    虽然看起来更复杂,但它使用 INDEX/MATCH 函数对将 B 列中的值范围解析为 A 列中的匹配值。这应该会大大减少对一长串日期时间的计算。这不是数组公式,不需要 Ctrl+Shift+Enter。

    【讨论】:

    • 非常感谢!它确实有效!但问题是我有很多数据要排序,所以我希望它能很好地处理标准偏差计算:)
    最近更新 更多