Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何在24小时内计算(汇总)适当百分比(不超过100%)_Excel_Vba_Excel Formula_Excel 2013_Array Formulas - Fatal编程技术网

Excel 如何在24小时内计算(汇总)适当百分比(不超过100%)

Excel 如何在24小时内计算(汇总)适当百分比(不超过100%),excel,vba,excel-formula,excel-2013,array-formulas,Excel,Vba,Excel Formula,Excel 2013,Array Formulas,主题听起来很简单,但我感兴趣的任务却不是 所以,我得到了一组每天都在变化的测量数据,一天内有更多的实例!因此,正如您在2019年2月7日看到的那样,您有5个实例正在以不同的时差进行更改(系统更改)。好吧,这就是重点,我需要有它的百分比,但在24小时内!不像你在这个例子中看到的那样,100%以上都是胡说八道 数据本身不断地记录数据,并且系统更改是自动的。有时每天可以有1-2个实例,有时超过5倍 我用=mod计算时差(d2-d1,1)和=sumifs计算每个系统一天的总和,但这是错误的,因为它也要计

主题听起来很简单,但我感兴趣的任务却不是

所以,我得到了一组每天都在变化的测量数据,一天内有更多的实例!因此,正如您在2019年2月7日看到的那样,您有5个实例正在以不同的时差进行更改(系统更改)。好吧,这就是重点,我需要有它的百分比,但在24小时内!不像你在这个例子中看到的那样,100%以上都是胡说八道

数据本身不断地记录数据,并且系统更改是自动的。有时每天可以有1-2个实例,有时超过5倍

我用
=mod
计算时差
(d2-d1,1)
=sumifs
计算每个系统一天的总和,但这是错误的,因为它也要计算前一天的时差并求和

有没有办法限制在24小时以内?不计算24小时以上发生的时差

我希望你得到我的关心。。这只是整个画面的一小部分,还有更多的活动,我有超过100%

我的意思是有一种方法可以把=
MIN(1;I2)
放进去,但我只限于100%的准确率。不知道这是不是正确的方法


好的。这可能不完全是你想要的,但我希望这能帮助你达到目的

您有3个主要的静态数据列:

  • 日期
  • 开始时间
  • 系统
我首先将“日期”和“开始时间”组合成一个“开始日期时间”列

然后,我使用
MINIFS
创建了一个“Finish DateTime”列,这样,表的排序顺序就不会影响数据

然后我制作了另一列,显示完成时间或一天的结束时间,以先到者为准(
MIN

然后我计算“总时差”——简单地说是“完成日期时间”减去“开始日期时间”

我再次这样做,但这次是“午夜截止完成时间”

我添加的最后一个helper列是显示午夜切断后经过了多少时间。这只是“总时间差”减去“午夜截止时间差”

到目前为止,一切都相当简单。这是一张图片,希望能让我的布局更清晰。(可以根据需要移动或隐藏列)

这些helper列的公式非常简单,因此我将不解释它们,而是在下面提供它们:

开始日期时间

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)
---------------------------------------------------------------
编辑:回应评论的澄清。
---------------------------------------------------------------

“FinishDateTime”公式实际上只是一个
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)
            )
        )
    )
)

如果您有任何疑问,请让我知道。

只是想澄清一下,您是想找到按天分割的总时差%,还是按系统和天分割的总时差?@Gravitate Good point!对不起,没有包括这一点,按系统和日期分割!所以对于这两个系统,因为我可以计算利用率并进行比较…对。。。但是你还想在每天的午夜切断时差吗?好像你几乎需要在每天结束时插入另一个条目?好吧,这是一件事,我希望它能准确地持续24小时,即使它将被“削减”。但不仅仅是像我的情况那样超过100%。这是可行的还是可能是问题,因为也有不同的情况,例如,你可以有一个“差距”为2天或类似的…我认为我几乎在那里。。。不过,这一差距正在引发一个问题。是否有最大天数的差距?当我完成另一项任务时,我将有更深入的了解,我现在正在做,但似乎公平!和我的方法有点不同。但唯一吸引我注意的是最后一张表,系统在哪里-两个系统的百分比如何相同?正如我所说,我必须并且将在回家后彻底了解细节,这是我目前唯一看到的。你做得很好,时间差肯定会有用的!哎呀。很抱歉别理它。复制和粘贴我的百分比公式只是一个愚蠢的错误。我现在已经修复了图像。太好了!我会一直写到考试结束!我会通知你的!这个[Finish Datetime]列让我很困扰……我刚刚尝试将日期/时间与“IF”语句连接起来,但它没有
<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>