数据如下表所示。我试图从文本中提取小时(h)和分钟(m)来计算谷歌表格中的总持续时间。 ex 3h 24m 等于 3.4 我无法错误地提取分钟部分。
我尝试过以下功能,这些功能对于小时部分工作良好,但对于分钟部分则失败。
=LEFT(c1, SEARCH("h",c1)-1)
=IFERROR((REGEXEXTRACT(D1,"([[:print:]]+)h")),0)
C D
4h 2h 49m
32m 19s 2h 2m
6h 7m 3h 24m
最佳答案
要将小时、分钟和秒提取到单独的列中,您可以使用三个单独的 REGEXEXTRACT
公式:
=IFERROR(REGEXEXTRACT(C1,"(\d+)h"), "")
=IFERROR(REGEXEXTRACT(C1,"(\d+)m"), "")
=IFERROR(REGEXEXTRACT(C1,"(\d+)s"), "")
这里,(\d+)
是一个捕获组,它捕获 1 个或多个数字,并且后面的字母只是匹配,因此函数不会返回。
您还可以尝试使用可选模式提取每个部分:
=REGEXEXTRACT(C1, "(?:(\d+)h)?\s*(?:(\d+)m)?\s*(?:(\d+)s)?")
在这里,所有小时、分钟和秒模式都是可选的,即使缺少小时,分钟仍然会匹配。
详细信息
(?:(\d+)h)?
- 用非捕获组包裹的可选小时部分:(\d+)
- 第 1 组:一位或多位数字h
-h
字母
\s*
- 0+ 个空格(?:(\d+)m)?
- 可选的分钟部分:(\d+)
- 第 2 组:一位或多位数字m
-m
字母
(?:(\d+)s)?
- 可选的秒部分:(\d+)
- 第 3 组:一位或多位数字s
-s
字母
关于regex - 从 Google 表格上的文本中提取特定数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62123042/