excel上具有多个条件的平均值

时间:2013-08-22 00:22:03

标签: excel excel-formula formula average formulas

我一般都会问Python或VBA的问题,但在过去的4.5小时里我一直很讨厌,我需要它来完成一个宏,我只是得到div / 0错误。

在excel中我有五列: 1.物品进入队列的日期(A)
2.物品进入队列的时间(B)
3.物品离开队列的日期(C)
4.物品离开队列的时间(D)
5.物品在队列中的时间(E)

我需要在昨天16:00到16:00之间输入和离开队列的项目的平均时间。还要忽略数字<超过1(因为如果一个项目在那里超过24小时,则默认值为负)。

我试过尝试了这个并没有结果:(

= AVERAGEIFS(E1:E4,A1:A4, “=今日() - 1”,B1:B4, “> 16:00”,C1:C4, “=今天()”,D1:D4, “< 16:00”)

任何想法将不胜感激!在此先感谢:)

2 个答案:

答案 0 :(得分:2)

你的公式是这样说的:

=AVERAGEIFS(E1:E4,A1:A4,"=today()-1",B1:B4,">16:00",C1:C4,"=today()",D1:D4,"<16:00")
  

取E1的平均值:E4如果......

     
      
  1. A1:A4相当于字符串“= today() - 1”
  2.   
  3. B1:B4相当于字符串“&gt; 16:00”
  4.   
  5. C1:C4相当于字符串“= today()”
  6.   
  7. D1:D4相当于字符串“&gt; 16:00”
  8.   

您想要说的是:

  

取E1的平均值:E4如果......

     
      
  1. A1:A4等同于公式=today()-1
  2. 的结果   
  3. B1:B4小于16小时
  4.   
  5. C1:C4等同于公式=today()
  6. 的结果   
  7. D1:D4小于16小时
  8.   

让我们先解决2和4。

在Excel中,1天(24小时)= 1.时间以十进制值的形式存储为一天的百分比:

1天= 1 1天= 24小时 1小时= 1/24 16小时= 16/24 = 2/3

因此,您应该将公式重写为:{/ 1>而不是B1:B4,">16:00"

B1:B4,">"&2/3

&连接大于号,2/3将给出相当于16:00的小数值。最后,您将得到一个等于“&gt; .6666666666”的字符串

(如果您愿意,也可以使用B1:B4,">.6666666666666"

对于第1项和第3项,您根本不需要使用引号。因此,您可以使用以下内容代替A1:A4,"=today()-1"

A1:A4,today()-1
C1:C4,today()

综上所述,以下公式应该有效:

=AVERAGEIFS(E1:E4,A1:A4,today()-1,B1:B4,">"&2/3,C1:C4,today(),D1:D4,"<"&2/3)

答案 1 :(得分:1)

如果您正在寻找&#34;在昨天16:00到16:00之间进入和离开队列的项目&#34;有些人有可能今天进入队列 (或昨天离开队列)?如果是这样,你肯定需要检查今天输入的物品吗?使用AVERAGEIFS函数很难做到这一点 - 使用&#34;数组公式&#34;可能更容易。像这样:

=AVERAGE(IF(A1:A4+B1:B4>=TODAY()-1/3,IF(C1:C4+D1:D4<TODAY()+2/3,E1:E4)))

使用 CTRL + SHIFT + ENTER确认

我假设公式不必明确处理您的负值,因为这些只会出现在已存在超过24小时的项目中,并且IF函数无论如何都会排除这些值。 ..

如果你想对AVERAGEIFS做同样的事情,你需要创建两个额外的列,并添加进入/退出日期/时间,例如如果列G是列A和B的总和,列H是列C和D的总和,则可以使用此版本

=AVERAGEIFS(E1:E4,G1:G4,">="&TODAY()-1/3,H1:H4,"<"&TODAY()+2/3)

请注意,我使用了&gt; =和&lt;故意避免在几天内重复计算/不计算