在''Sheet1''我有每小时的温度值,看起来像这样:
Time Value
1.1.2017 0:00:00 -5
1.1.2017 1:00:00 -5
1.1.2017 2:00:00 -6
1.1.2017 3:00:00 -7
1.1.2017 4:00:00 -7
直到今年年底。
在''Sheet2''我需要计算每天avg
,min
,max
和13:00
小时,所以需要看起来像这样:
Day Avg Min Max 13:00
01.01.2017
02.01.2017
03.01.2017
04.01.2017
所以我设法得到它为AVG:
Avg = AVERAGEIFS(Sheet1!B;Sheet1!A;">="&DATE(YEAR(Sheet2!A2);MONTH(Sheet2!A2);DAY(Sheet2!A2));Sheet1!A;"<"&DATE(YEAR(Sheet2!A3);MONTH(Sheet2!A3);DAY(Sheet2!A3)))
但我需要帮助min
,max
,特别是在13:00
时。我想在“13:00”与vlookup (day&hour;...)
但是这给出了一个错误,对于min
和max
可能与small
和large
。
您可以使用如下所示的数组公式:
=AVERAGE(IF(INT(Sheet1!$A$2:$A$1000)=A2;Sheet1!$B$2:$B$1000))
=min(IF(INT(Sheet1!$A$2:$A$1000)=A2;Sheet1!$B$2:$B$1000))
=max(IF(INT(Sheet1!$A$2:$A$1000)=A2;Sheet1!$B$2:$B$1000))
并在13:00查找值
=INDEX(Sheet1!B:B;MATCH(A4+TIME(13;0;1);Sheet1!A:A;1))
前三个公式是数组公式,必须使用Ctrl-Shift-Enter确认。您不应该将它们与整列引用一起使用,因为这会降低您的工作簿速度。
更好的方法是将日期和时间分成两个不同的列。然后,您可以使用超快的AverageIfs,MaxIfs和MinIfs,它们可以与整列一起使用而没有问题。
A列中的日期,B列中的时间,C列中的值
=AVERAGEIFS(Sheet1!C:C;Sheet1!A:A;A2)
=MINIFS(Sheet1!C:C;Sheet1!A:A;A2)
=MAXIFS(Sheet1!C:C;Sheet1!A:A;A2)
而值1300小时
=SUMIFS(Sheet1!C:C;Sheet1!A:A;A2;Sheet1!B:B;">"&TIME(12;59;59),Sheet1!B:B;"<="&TIME(13;0;1))
时间值查找有点复杂,因为完全匹配将是0.54166666666666,末尾有无限数量的6。一旦你绕过最后的6到7,就没有完全匹配了。因此,公式查找时间范围在12:59:59到13:00:01之间的时间。
看到barryhoudini的帖子后编辑:使用较新版本的Excel,您应该能够将这些非数组公式与原始布局一起使用,因此如果您使用Barry对AverageIfs的建议,则根本不需要数组公式
=MAXIFS(Sheet1!B:B,Sheet1!A:A,">="&A2,Sheet1!A:A,"<="&A2+1)
=MINIFS(Sheet1!B:B,Sheet1!A:A,">="&A2,Sheet1!A:A,"<="&A2+1)
您可以使用此公式更轻松地完成平均值
=AVERAGEIFS(Sheet1!B:B;Sheet1!A:A;">="&A2;Sheet1!A:A;"<"&A2+1)
对于MIN
和MAX
,您可以使用这样的数组公式
=MIN(IF(Sheet1!A:A>=A2;IF(Sheet1!A:A< A2+1;Sheet1!B:B)))
用CTRL + SHIFT + ENTER确认
虽然用后者限制范围更好