【问题标题】:Excel: how to calculate percentage within 24h when have dynamic data (over 24h)Excel:当有动态数据时如何计算 24 小时内的百分比(超过 24 小时)
【发布时间】:2019-11-29 20:38:18
【问题描述】:

我无法弄清楚如何使用一组动态变化的数据计算一天(24 小时)内的百分比,您可以在 SS 上看到一天和不同的时间。但问题是,我可以使用=MOD (B3-B2,1) 计算时间之间的一般差异,然后将其转换为百分比(我在一天内只得到一小部分)。但是当时间在 23:59 之后问题仍然存在......

“系统”列实际上是两个交替工作的进程,因此一个处于关闭状态,另一个处于打开状态,并且都获得了该日期/时间(工作时间)。

如何计算一天内一个系统的百分比 - 所以它的工作时间以每天的百分比表示(所以,对于 10.01、11.01..)

这样的事情,然后让我们说一个系统一天内的百分比总和。许多示例(日期)给了我超过 100% 的信息。

我得到了一个不同的数据集(尝试了其他示例)并且效果不佳:

 SUMIFS($B$2:$B$1020;$A$2:$A$1020;$F3;$C$2:$C$1020;"<>"&G$1)-SUMIFS($B$2:$B$1020;$A$2:$A$1020;$F3;$C$2:$C$1020;G$1)+(INDEX($C$2:$C$1020;MATCH($F3;$A$2:$A$1020))=G$1)

可能是因为我从 PowerQuery 编辑了我的数据,然后输入到工作表中?还是别的什么?

【问题讨论】:

  • 我不确定我是否完全了解您想要获得的百分比。你是说你想知道一天的时间在每次开启和关闭之间的百分比是多少?
  • 或者您可能想要一天的总百分比?
  • @Marcucciboy2 是的,对不起,会编辑它!我需要每个系统每天...
  • @Marcucciboy2 但请注意日期转换,从 10 日到 11 日,或 12 日的 11 日。一个系统的活动时间比另一个系统长……这实际上是“削减它”的最大问题不知何故在一天之内....因为百分比必须达到 100%,有了这个,我得到了超过 100% 的东西。

标签: excel excel-formula excel-2013 excel-2016


【解决方案1】:

请记住,一天从 t=0 开始,到 t=1 结束,其中 t 是以天为单位的时间,对于两个进程 A 和 B,我们可以考虑四种情况:

Start with process A, end with process B

|___A1---B1___A2---B2___|

B1-A1+B2-A2

∑B - ∑A

Start with process A, end with process A

|___A1---B1___A2---B2___A3---|

B1-A1+B2-A2+1-A3

∑B - ∑A +1

Start with process B, end with process A

|---B1___A1---B2___A2---|

B1-0+B2-A1+1-A2

∑B - ∑A +1

Start with process B, finish with process B

|---B1___A1---B2___A2---B3___|

B1-0+B2-A1+B3-A2

∑B - ∑A

其中 A1 是进程 A 的第一个开启时间,A2 是第二个等等,并且 --- 表示进程 A 开启,___ 表示进程 A 关闭。

所以我们可以从进程 B 的启动时间总和中减去进程 A 的启动时间总和,如果当天的最后一个进程是进程 A,则加 1。

一整天的公式(如 19 年 11 月 1 日)

=SUMIFS($B$2:$B$23,$A$2:$A$23,$F3,$C$2:$C$23,"<>"&G$1)-SUMIFS($B$2:$B$23,$A$2:$A$23,$F3,$C$2:$C$23,G$1)+(INDEX($C$2:$C$23,MATCH($F3,$A$2:$A$23))=G$1)

第一天呢,半点之前什么都没有?现在假设进程A之前的任何东西都被进程B占用是错误的,反之亦然,因此如果第一个进程不是进程A,则必须减去第一次并在计算中添加另一个项:

=SUMIFS($B$2:$B$23,$A$2:$A$23,$F2,$C$2:$C$23,"<>"&G$1)-SUMIFS($B$2:$B$23,$A$2:$A$23,$F2,$C$2:$C$23,G$1)+(INDEX($C$2:$C$23,MATCH($F2,$A$2:$A$23))=G$1)-(INDEX($C$2:$C$23,MATCH($F2,$A$2:$A$23,0))<>G$1)*$B2

所以第一天的总时间不是 24 小时,而是大约 10.5 小时或一天的 44%。

【讨论】:

  • 感谢您的详细说明!我没有想到这个...我尝试在 Pivots 中解决它...仍然比我之前的要好。无论如何,你的这个公式对我不起作用......不知道为什么?!
  • 天哪!它都不起作用:-(你能检查日期和时间绝对是实际日期和时间而不是文本吗?例如,如果你在第一个日期和时间将格式更改为一般,如果输入正确,他们应该给出 43475 0.56462963 .
  • 嗯实际上没有,我从其他工作表中复制了这些列,也许这是一个原因..
  • 有效!你是对的。我只是对日期/时间字段做了 =DATEVALUE,上帝正是我想要的!非常感谢您的帮助,简直太棒了!
  • !!!又出问题了,尝试了不同的数据集,但似乎有问题……百分比超过 100%,500%……查看我的最后一张照片。我在 PowerQuery 中编辑了数据,具有足够的数据类型……在我没有使用 PowerQuery 之前,看起来不错。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-09-24
  • 2020-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多