主题听起来很简单,但我感兴趣的任务却并非如此!
因此,我得到了一组每天变化的测量数据,一天之内有更多实例!因此,如您在07.02.2019上所看到的,您获得了5个实例,它们正在以不同的时差变化(系统变化)。嗯,这就是要点,我需要在24小时内以百分比表示!不像您在本示例中可以看到100%以上的废话。
数据本身正在不断记录数据,并且系统自动更改。有时您每天可以有1-2个实例,有时是5倍以上。.
我使用=mod
进行了时差(d2-d1,1)
,并使用=sumifs
进行了一些计算,以给我每个系统一天的总和,但这是错误的,因为它还占用了与前一天并进行总结。...
有什么办法可以限制在24小时内吗?不计算24小时内的时差吗?
希望您能引起我的关注。.这只是完整图片的一小部分,还有更多的事件发生在我所占的比例超过100%的情况下。...
我的意思是有一种== MIN(1;I2)
的表达方式,但是我只限于100%。.不知道这是否正确。
答案 0 :(得分:1)
好的。这可能无法完全满足您的要求,但我希望这能帮助您到达那里...
您有3个主要的静态数据列:
我首先将“日期”和“开始时间”合并为一个“开始日期时间”列。
然后我使用MINIFS
创建了一个“ Finish DateTime”列-这样,表的排序顺序将不会影响数据。
然后我在另一列中显示了完成时间或一天的结束时间,以先到者为准(MIN
)。
然后我计算“总时差”-简单地是“完成日期时间”减去“开始日期时间”。
我再次这样做,但是这次是“午夜结束时间”。
我添加的最后一个帮助者专栏是显示午夜中断后经过了多少时间。这就是“总时间差”减去“午夜截止时间差”。
到目前为止,一切都很简单。这是一张有望使我的布局清晰的图像。 (您可以根据需要移动或隐藏列)。
这些帮助器列的公式非常简单,因此我将不对其进行解释,但将在下面提供它们:
开始日期时间
Start Datetime:
=$A3+$B3
Finish Datetime:
=IF(MINIFS($D$3:$D$12,$D$3:$D$12,">"&$D3)=0,"",MINIFS($D$3:$D$12,$D$3:$D$12,">"&$D3))
Finish Time (Midnight Cut Off):
=IF($E3="","",MIN($A3+1,$E3))
Total Time Diff:
=IF($E3="","",$E3-$D3)
Time diff (Until Midnight):
=IF($E3="","",$F3-$D3)
Remaining Time (After Midnight):
=IF($E3="","",$G3-$H3)
-------------------------------------------- --------------------
编辑:澄清评论。
----------------------------------------------- -----------------
“完成日期时间”公式实际上只是一个MINIFS
函数。
它看起来更复杂,因为我将其包装在IF
语句中,以处理没有结束时间(即我们目前处于该时间段)的情况。
在这种情况下,为避免返回“ 01/01/1900”(0),它将返回一个空字符串。
主要的MINIFS
功能:
MINIFS($D$3:$D$12,$D$3:$D$12,">"&$D3)
通过选择大于“开始日期时间”的最小“开始日期时间”来工作。 (即下次开始的时间。)
如果您的数据始终按升序的“开始日期时间”排序,则可以通过简单地=$D4
(即选择下面一行的开始日期时间)来完成相同的操作。但是,如果您随后对数据进行不同的排序,则会完全破坏您的结果。
我总是喜欢将表设为“安全排序”。
-------------------------------------------- --------------------
结束编辑
----------------------------------------------- -----------------
此外,如您所见,我在末尾添加了一个完全独立的表。
这在左侧列出了所有日期(甚至是在主数据中跳过的日期)的列表。 以及所有水平运行的系统的列表(每个系统两列以显示时间和百分比)。
百分比只是该特定系统的时间除以该特定日期的总时间。
困难的部分是计算时间。这样做的公式如下:
=IF($K3=MAX($A$3:$A$12),"",
MIN( "24:00:00",
SUMIFS($H$3:$H$12, $A$3:$A$12, $K3, $C$3:$C$12, L$1)
+
MAX(0,
SUMIFS($I$3:$I$12, $D$3:$D$12, MAXIFS($D$3:$D$12, $A$3:$A$12, "<"&$K3, $C$3:$C$12, L$1), $C$3:$C$12, L$1)
-
( $K3
-IF(MAXIFS($A$3:$A$12,$A$3:$A$12,"<"&$K3)=0, $K3, MAXIFS($A$3:$A$12,$A$3:$A$12,"<"&$K3)+1)
)
)
)
)
第一部分,检查相关日期是否有完成时间,如果没有,则返回空白。
MIN("24:00:00", ...
将时间限制为24小时。即如果跳过了多天,则忽略多于一天(在该特定日期)。
其余的公式基本上是:
<Total time diff up until midnight for the particular date & system>
+
<The time remaining after midnight from the day before>
-
<The number of days skipped>
如有任何疑问,请告诉我。