我有一个包含测试数据的电子表格。数据是相当规律的时间间隔的温度读数。我之所以说是“相当”,是因为读数通常间隔10秒,但是偶尔测试硬件会跳过一两个读数。
在本练习中,我们可以忽略丢失的数据。
第一次阅读于2016年5月12日在09:00:00,而最后一次阅读在2016年5月20日在09:10:10。可在此处下载文件:
http://mbf.me/3XkRR0
我想找到每个小时间隔的平均温度。
如果可以将这些平均值插入新的列(例如D列),那就太好了。
例如,在单元格B361中,时间为09:59:50。下一个单元格B362将表示下一个小时时间段,因此在单元格D361中,我想查看从单元格C2到C361的温度读数的平均值。然后在下一个小时间隔,单元格D718将显示从单元格C362到C718(包括端值)的平均温度读数。
D1078将对单元格C719到C1078进行平均,依此类推。
尽管我在这里没有任何VBA工作可展示,但是我一直在尝试使用excel中的各种功能(例如自动填充系列公式),但无济于事。老实说,我认为我无法绕开Excel处理时间来解决这一问题的方法,更不用说使用有限的VBA技能将其转换为代码了。我认为时间间隔并不是真正一致的事实,并且数据跨越几天,这使我很难解决这个问题。
这是我第一次发布问题,因此如果我不遵守任何规则,我深表歉意(尽管在此过程中我曾多次咨询stackoverflow,但我成功编写了自己的首次VBA Excel代码而不发布问题!)
非常感谢您的帮助。
答案 0 :(得分:1)
这不是您要的,而是另一种考虑的方法:
在您的示例文件中,Time
列的格式实际上是 Date / Time (日期/时间),仅显示时间。
所以您可以
Average
(而不是默认的Sum
)并根据需要设置数字的格式(我用一个小数点表示)按小时和天分组的数据透视:
仅按小时分组的数据透视:
答案 1 :(得分:0)
将其放在D列的顶部并填写。
=if(hour(b2)<>hour(b2+time(0, 0, 10)), averageifs(c:c, b:b, ">="&int(b2)+time(hour(b2), 0, 0), b:b, "<="&int(b2)+time(hour(b2), 59, 59)), "")