Excel应该很简单,在一列中用日期时间计算两个未缺失条目之间的平均值

Excel应该很简单,在一列中用日期时间计算两个未缺失条目之间的平均值,excel,excel-formula,Excel,Excel Formula,我必须计算相应时间段的平均消耗量(表中还包含其他数据)。 我有一个带有日期和时间列(欧洲格式)的表和一个带有偶发计数器状态的列(从文本列中获取,带有=IF(ISNUMBER(SEARCH(“count.state.”E1));MID(E1;FIND(“count.state.”E1)+12;5);“”)。 我想自动计算平均消耗量,而不必手动选择范围、编辑公式、然后复制等 A B F G 1 2.12. 23:00 10765 =INDE

我必须计算相应时间段的平均消耗量(表中还包含其他数据)。 我有一个带有日期和时间列(欧洲格式)的表和一个带有偶发计数器状态的列(从文本列中获取,带有=IF(ISNUMBER(SEARCH(“count.state.”E1));MID(E1;FIND(“count.state.”E1)+12;5);“”)。 我想自动计算平均消耗量,而不必手动选择范围、编辑公式、然后复制等

    A       B       F       G
1   2.12.   23:00   10765   =INDEX/MATCH formula should use the same data as 3 rows below 
2   3.12.   8:00    ""      =INDEX/MATCH formula should use the same data as 2 rows below 
3   3.12.   11:00   ""      =INDEX/MATCH formula should use the same data as in the row below 
4   3.12.   18:00   10769   =(10769 - 10765) / (3.12.18:00 - 2.12.23:00)
5   3.12.   23:00   ""      =INDEX/MATCH formula should use the same data as 5 rows below 
6   4.12.   11:00   ""      =INDEX/MATCH formula should use the same data as 4 rows below 
7   4.12.   15:00   ""      =INDEX/MATCH formula should use the same data as 3 rows below 
8   4.12.   18:00   ""      =INDEX/MATCH formula should use the same data as 2 rows below 
9   4.12.   23:00   ""      =INDEX/MATCH formula should use the same data as in the row below 
10  5.12.   18:00   10786   =(10786 - 10769) / (5.12.18:00 - 3.12.23:00)
我正在学习使用Excel函数,但这似乎超出了我的理解范围。 有人能解决这一挑战吗? 谢谢你的耐心和努力


Miki

好吧,也许不是你想要的优雅解决方案,但它完成了任务

这样做的目的只是使用helper列将日期/时间和计数器读数从包含最后一次计数器读数的行向下复制到所有行,直到下一次计数器读数之前的一行,如下所示

=IF(ISNUMBER(F2),F2,H1) for the counter starting in H2

=IF(ISNUMBER(F2),G2,I1) for the date/time starting in I2
然后,当到达包含下一个计数器读数的行时,进行计算

我的G列包含使用

=DATEVALUE(A2&"2014")+B2 starting in G2.
由于我所在的地区的原因,我冒昧地将日期中的点改为斜线

那么实际的计算是

=IF(AND(ISNUMBER(F2),ISNUMBER(I1)),(H2-H1)/(I2-I1),"")
为了复制每个时间段的结果,我从单元格K11的底部开始,将公式向上拉

=IF(ISNUMBER(J11),J11,K12)
看起来像这样

=IF(ISNUMBER(F2),F2,H1) for the counter starting in H2

=IF(ISNUMBER(F2),G2,I1) for the date/time starting in I2

然而,有一个有用的讨论,找到第一个和最后一个单元格的数值条目,从而得出公式

=IFERROR((INDEX(F2:F$11,MATCH(1,INDEX(ISNUMBER(F2:F$11)+0,0),0))-(INDEX(F$1:F1,MATCH(9E+307,F$1:F1,1))))/(INDEX(G2:G$11,MATCH(1,INDEX(ISNUMBER($F2:F$11)+0,0),0))-(INDEX(G$1:G1,MATCH(9E+307,F$1:F1,1)))),"")
放置在H2中并向下拉,这是找到答案的直接方法


我知道我更喜欢哪个。

所以让我看看我是否理解正确,您希望G中的公式仅在计数器填充到F列时计算平均消耗量,并且它应该基于以前的计数器状态和日期?是的。我有每隔几行两个时间间隔的消耗量的“计数器”数据(没有规则模式)。这两个计数器值之间的差值表示(平均值)第一个和第二个时间点之间的消耗量。我认为我可以找到一些解决这个问题的现有方法,因为它似乎是通用的,例如在计算气体千年等时。但没有这样的运气。如果我这样做,我只会使用辅助列!我会发布这种方法,但它会很有趣ting想看看其他人是否能想出一个更整洁的方法。我在考虑采用以下逻辑(但无法将其应用到任何工作公式中):1.G列中的单元格:查找以查找F列中的任何值。上下查找直到找到一个值,2.查找F列中的值所在的同一行中的日期/时间,然后计算时间差,3.然后获取平均值很简单。显示得非常好,解释得非常好!我考虑尝试使用辅助列,如果是,我将使用它们一些更优雅的解决方案仍然难以捉摸。这不仅仅是原则问题,我将不得不向其他人展示该表,因此更容易看是一件好事。感谢您的积极评论。您可以隐藏帮助器列以改进演示。现在我想,您是对的,可以使用=MATCH(9E+307,F1:F4,1)获取当前行之前最后一个数字的行(第一次计算为第5行),然后使用索引获取计算中需要的上一个计数器值和时间。