【问题标题】:How to get Google Sheets to recognize I'm entering time in MM:SS?如何让 Google 表格识别我在 MM:SS 中输入时间?
【发布时间】:2022-09-27 18:08:52
【问题描述】:

我正在尝试记录发生许多事情所需的时间,但似乎无法让 Google 表格理解我的输入。我希望能够在单元格中输入“26:30”之类的内容,并让电子表格了解这意味着 26 分 30 秒,然后能够在公式中使用该数字,例如返回一系列时间中最短的一个,或两次之间的差。

另外,我输入的绝大多数数字都在一个小时以内,所以我不想每次都输入“0:26:30”之类的东西,只是为了让它明白我意思是 26 分钟,而不是 26 小时。但是,对于某些时间超过一小时的罕见情况,我希望能够输入诸如“1:10:23”而不是“70:23”之类的内容。

如果可能的话,我宁愿通过直接格式化我输入时间的单元格来实现这一点,而不是以一种格式输入它并通过公式将其转换为单独的单元格。

有没有一种方法可以满足所有这些目标?

    标签: google-sheets time formatting duration


    【解决方案1】:

    谷歌表格不是以这种方式设计的。如果你想输入26:30,那么最好的做法如下:

    将单元格转换为Plain Text,输入您的持续时间,并在公式中说明您的规则。为了计算,要将文本字符串转换为值,您可以使用以下原则

    =ARRAYFORMULA(IFERROR(IF(REGEXMATCH(A1:A, ":\d+:"), A1:A*1, ("0:"&A1:A)*1)))
    

    几个例子:

    =ARRAYFORMULA(TEXT(AVERAGE(IF(REGEXMATCH(A1:A2, ":\d+:"), 
     A1:A2*1, ("0:"&A1:A2)*1)), "[m]:ss"))
    

    =ARRAYFORMULA(TEXT(SUM(IF(REGEXMATCH(A1:A2, ":\d+:"), 
     A1:A2*1, ("0:"&A1:A2)*1)), "[h]:mm:ss"))
    

    =ARRAYFORMULA(TEXT(IF(REGEXMATCH(A2, ":\d+:"), A2*1, ("0:"&A2)*1)-
                       IF(REGEXMATCH(A1, ":\d+:"), A1*1, ("0:"&A1)*1), "[m]:ss"))
    

    【讨论】:

    • 这个公式给了我一些奇怪的结果。 23:59 及以下的时间在第二列中被格式化为 23:59:00,而似乎只有高于该时间的时间才有效。
    • 我制作了一张与您的第一个示例相同的新表格,但我在单元格 A1 中输入了不同的数字。当他们在 24:00 以上时,一切正常。在此之下,第一个数字被解释为小时。
    • @Ulysses 答案已更新。现在试试
    • @Ulysses 您的最终目标与您的工作表结构一样仍然未知,因此我们所能提供的只是您可能永远不需要的示例,但您可以从中学习。如前所述,如果将 A 列格式化为纯文本并输入时间 h:mm:ss 或仅输入 mm:ss,公式将执行以下操作: IF REGEXMATCH 将检测到 A 列包含模式冒号-数字-冒号:\d+: 这意味着该输入采用 h:mm:ss 格式,因此它乘以 1 以将字符串转换为可以进一步计算的值。如果输入的时间不包含此类模式,则表示您以 mm:ss 格式输入时间
    • 如此简单的 0: 在其前面添加以表示 0 小时,因此工作表将在乘法后将其识别为时间值。然后你做你的事——不管它是什么,MAX、MIN、AVERAGE、SUM....你最终会得到一个值。有了它,您有两个选择:将其格式化为时间或通过内部格式化自定义时间。或您的第二个选项:使用 TEXT 完全按照您希望的样子输出值
    【解决方案2】:

    目前似乎没有办法直接格式化单元格,以便 Google 表格将其识别为 MM:SS 而不是 HH:MM,因此我不得不使用公式。分享我在下面使用的解决方案。

    我进行了设置,以便用户以 MM:SS 或 H:MM:SS 的形式将时间输入到单元格 A1 中,然后我将此单元格格式化为纯文本,然后将第二个单元格格式化为“持续时间”使用以下公式转换A1 的输入:

    =time(left(A1,if(len(A1)<6,"",len(A1)-6)),right(left(A1,len(A1)-3),2),right(A1,2))
    

    要打破这一点:

    • 首先假设A1 的内容是具有5 个或更多字符的文本字符串,格式为MM:SS 或H:MM:SS 或HH:MM:SS。它不包括任何类型的错误处理来检查这是真的。
    • 公式的time(X,Y,Z) 部分将不同的输入分别转换为小时、分钟和秒,并生成格式为 HH:MM:SS 的数字,该数字被识别为时间,因此可以在公式中使用.请注意,单元格必须格式化为“持续时间”才能正确显示。
    • 上面Z就是right(A1,2),它提取了A1的最后两个字符,即输入的SS部分。这些最终以秒为单位。
    • 同样,Yright(left(A1,len(A1)-3),2),它从A1 的文本字符串的右侧提取第 4 和第 5 个字符,即输入的 MM 部分,在 : 之后。然后将此数字识别为分钟。
    • 最后,Xleft(A1,if(len(A1)&lt;6,"",len(A1)-6)),它基本上是说“如果A1 少于6 个字符,那么它不能有小时,所以留空,否则提取除最后6 个以外的所有字符”,即输入的 HH 部分(如果存在)。这个数字(可能是也可能不是 0)然后被识别为小时。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-04
      • 2014-12-02
      • 2011-06-08
      • 2017-07-02
      • 1970-01-01
      • 2022-11-24
      相关资源
      最近更新 更多