在 Excel 2010 中使用经过的时间

在 Excel 2010 中使用经过的时间

我有一个 Excel 电子表格,其中用文本和数字记录了员工的时间,例如 7 小时 6 分钟。我需要将现有数据转换为 h:mm,这样我就可以自动扣除午休时间。任何建议都值得赞赏!

答案1

对于此类问题,标准建议是不要在一个公式(一个单元格)中做很多事情,而是将工作分散到多个单元格中。通常,输入和结果将位于并行列中;因此,建议的方法是在其他列中计算中间结果,这些列通常称为“辅助列”。一旦一切正常,您可以隐藏辅助列,也可以将它们放在主数据的右侧(例如,列 AA- AG),使它们不可见。

以下是我整理的一些东西:

A1:7小时6分钟
B1:=FIND("小时数", A1)
C1:=FIND("小时",A1)
D1:=FIND("分钟",A1)
E1: =值(LEFT(A1,C1-1))
F1:=VALUE(IF(ISERROR(B1),MID(A1,C1 + 4,D7-(C1 + 4)),MID(A1,B1 + 5,D1-(B1 + 5))))
G1:=AND(F1>=0,F1<60)
H1:=IF(或(ISERROR(C1),ISERROR(D1),ISERROR(E1),ISERROR(F1),ISERROR(G1)),TRUE,NOT(G1))
I1:=IF(H1, "无效",TIME(E1, F1, 0))

I包含您想要的结果。(您可能已经知道这一点,但如果它显示为数字,则它是一天的一小部分。您可以将其显示为毫米通过格式化它。)一些解释:

  • 搜索我们期望看到的字符串。搜索“hour”和“minute”,允许输入“1 hour 30 minutes”或“5 hours 1minute”。
  • 使用LEFTMID提取我们预期包含数字的输入字符串部分。通过调用 计算它们(将它们转换为可以进行算术运算的数字)VALUE
  • 如果有错误,则显示“无效”,否则,根据小时数和分钟数计算时间长度。

笔记:

  • 它足够灵活(冷漠),可以接受“1 小时 30 分钟”或“5 小时 1 分钟”。
  • 如果分钟数 < 0 或 ≥ 60,它会报告“无效”,但如果#NUM!小时数 < 0,它会抛出一个错误,并且,如果小时数 ≥ 24,它会将其模 24 处理(因为这是函数的作用TIME)。
  • 如果数字处出现非数字文本(“FOO 小时 BAR 分钟”)将导致错误,但非整数则不会 - “7.5 小时 0 分钟”将被视为“7 小时 0 分钟”(因为该TIME函数就是这么做的)。
  • 如果它找不到字符串“hour”和“minute”,它将报告“Invalid”,因此“7 hours”会导致错误(使用“7 hours 0 minutes”),但它会忽略“minute”一词后的无关文本,因此“7 hours 6 minutes till I can go home”是可以的。

我希望这足以让您能够根据自己的需要进行调整。

相关内容