【问题标题】:Calculating Time Between Time/Days In Excel在 Excel 中计算时间/天之间的时间
【发布时间】:2018-07-05 14:54:37
【问题描述】:

我在为 Excel 遇到的问题找到最佳解决方案时遇到了一些困难。现在,我有一张在一个轴上有时间的大工作表(A 列是 2018 年 1 月 1 日到 2019 年 1 月 1 日之间的每个日期),在工作表中我有时间使用 h:mm:ss 函数不同区间的不同单元格。

例如,对于 2018 年 1 月 1 日 - 18 年 1 月 3 日的行,开始时间是 2018 年 1 月 1 日(例如 8:00:00),然后是 1/3 的结束时间/18(例如,16:00:00)。 这两个日期之间的时间和这些日期的两次是我想要计算的。

这是在有 2000 多行的工作表上,每个间隔都不同(有些可能是三天,有些可能是同一天)。所有这些之间的区别是另一个带有位置的列。这看起来像:

第 2 行)日期、位置 [A]、到达时间 (8:00:00)、出发时间(空白)
第3行)日期(次日),地点[A](同上),到达时间(空白),出发时间(16:00:00)

+---+----------+----------+---------+-----------+
|   |    A     |    B     |    C    |     D     |
+---+----------+----------+---------+-----------+
| 1 | Date     | Location | Arrival | Departure |
| 2 | 1/1/2018 | A        | 8:00    |           |
| 3 | 1/2/2018 | A        |         | 16:00     |
| 4 | 1/3/2018 | B        | 8:00    | 16:00     |
| 5 | 1/4/2018 | C        | 5:00    | 13:00     |
| 6 | 1/5/2018 | C        | 5:00    | 10:00     |
+---+----------+----------+---------+-----------+

我需要计算从某个日期的到达时间到下一个日期的出发时间在位置 [A] 中花费的时间。

请让我知道你认为这个问题的最佳解决方案是什么,我对任何事情都持开放态度!

+--------+----------+---------+-----------+------------------------+
| Date   | Location | Arrival | Departure | Time Spent in Location |
| 1/1/18 | A        | 8:00:00 | 16:00:00  | 8:00:00                |
| 1/2/18 | B        | 8:00:00 |           |                        |
| 1/3/18 | B        |         | 18:00:00  | 34:00:00               |
| 1/4/18 | C        | 8:00:00 |           |                        |
| 1/5/18 | C        |         |           |                        |
| 1/6/18 | C        |         | 16:00:00  | 56:00:00               |
+--------+----------+---------+-----------+------------------------+

上面的帖子非常准确 - 我遇到的问题是每个位置的时间间隔不同(并且是随机的)。我试图简单地增加一个列来计算在每个位置花费的时间 - 从那里我将收集每个位置的数据以及在那里花费多少小时。

  • 另外,非常感谢您迄今为止的帮助!我对 cme​​ts 的制作速度感到震惊 - 很抱歉我花了这么长时间制作模型,希望它有助于使我的目标更加明确。

Actual Snip from sheet

【问题讨论】:

  • 请以表格形式实际模拟数据,添加您希望输出的显示方式和位置,这将有助于理解
  • 您可以使用https://ozh.github.io/ascii-tables/ 格式化您的电子表格数据并选择“电子表格”的“标题位置”,然后您可以将该示例粘贴到此处。我会快速尝试一下并添加到您的问题中,但是更多示例数据/场景和您的期望结果将是对这个问题的一个很好的补充。 (根据您的文本示例,我进行了尝试)。请添加所需的结果。
  • 希望我上面添加的表格有助于澄清!
  • 您需要处理的一个问题是 32 小时不是正常的 excel 时间格式。 Max 为 23。您需要自定义输出。如果我对这些人有误,请纠正我。
  • @ForwardEd 输出需要格式化为[h]:mm:ss,在Format>More Formatting Options>Custom>=TEXT(x,"[H]:MM:SS") 下可用

标签: excel


【解决方案1】:

一种可能的解决方案是在 E2 中使用以下公式并向下复制。

=IF(C3="",((A3+D3)-(A2+C2)),IF(D3<>"",D3-C3,""))

编辑:上面公式中的 D4-C4 更改为 D3-C3)

它的工作原理是将日期与时间结合起来,根据需要进行数学运算,然后将其剥离。点击几个 IF 语句来处理单行位置或仅到达的行。它还假设第一个条目不能是离开。

感谢 urdearboy 提供正确的自定义格式。您需要将列的单元格格式化为 [h]:mm

选项 2

这假设位置可以重复。辅助列的使用用于创建唯一的组合。

在 F2 中,使用以下公式并根据需要向下复制:

=COUNTIFS($B$2:B2,B2,$C$2:C2,"<>"&"")

锁定单元格的 $ 非常重要。请注意它是如何在您向下复制时创建扩展范围的。

现在从技术上讲,您可以将以下内容组合成一个怪物公式,但是如果其他人必须处理它或者您稍后再回来使用它,将很难遵循并因此维护它。因此,在那张纸条上,我将把它分成另外 2 个帮助列和公式

在 G 列中,我们将确定出现唯一位置的第一行。通过组合位置名称和唯一 ID 号来创建唯一位置,这是迄今为止在列表中出现的频率的计数。 IE。 A1 是第一次到达位置 A,E2 是第二次到达位置 2。在 G2 中放置以下公式并向下复制。

=AGGREGATE(15,6,ROW($A$2:$A$16)/(B2&F2=$B$2:$B$16&$F$2:$F$16),1)

现在到达行已确定,需要对出发行执行相同的操作。可以使用相同的公式,但将 15 更改为 14。在 H2 中放置以下公式:

=AGGREGATE(14,6,ROW($A$2:$A$16)/(B2&F2=$B$2:$B$16&$F$2:$F$16),1)

现在您已经确定了这些位置,您可以使用以下公式计算时间:

=IF(D2="","",(INDEX(A:A,H2)+INDEX(D:D,H2))-(INDEX(A:A,G2)+INDEX(C:C,G2)))

在示例中,我将其放在 I2 中,然后根据需要将 F2:I2 复制下来。但它可以放在 E2 中并同样容易地复制下来。

如果您不希望在 G 和 H 中使用这些额外的辅助列,那么您可以将它们代入您的时间公式中,它将如下所示:

=IF(D2="","",(INDEX(A:A,AGGREGATE(14,6,ROW($A$2:$A$16)/(B2&F2=$B$2:$B$16&$F$2:$F$16),1))+INDEX(D:D,AGGREGATE(14,6,ROW($A$2:$A$16)/(B2&F2=$B$2:$B$16&$F$2:$F$16),1)))-(INDEX(A:A,AGGREGATE(15,6,ROW($A$2:$A$16)/(B2&F2=$B$2:$B$16&$F$2:$F$16),1))+INDEX(C:C,AGGREGATE(15,6,ROW($A$2:$A$16)/(B2&F2=$B$2:$B$16&$F$2:$F$16),1))))

使用怪物公式的整理版本,因此不需要 G 列和 H 列公式:

记得将自定义格式应用到 [h]:mm 的时间计算列

【讨论】:

  • 您好 Ed,感谢您输入公式 - 我在将上面附加的图像格式化为您发布的解决方案中显示的方式后,在我的工作表上尝试了它 - 这种方法确实有效。但是,如果 a) 工作表不是 2000+ 行长并且 b) 有一些条目因为资产在运输中而没有位置,则格式差异不会成为问题。不过,我认为您的公式会起作用,但我现在将尝试进行一些修改!
  • 某个位置的到达和离开之间是否有最大行数?
  • 有一个最大值,我敢肯定,但没有限制(例如,所有条目最多 5 天)- 它本质上是随机的。
  • 我看到最后两个条目的位置相同。这是一个错误还是实际上允许重复位置?
  • 位置重复是允许的,但不幸的是经常发生
猜你喜欢
  • 2023-03-30
  • 2021-11-06
  • 1970-01-01
  • 1970-01-01
  • 2013-03-25
  • 2012-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多