首页 > 解决方案 > 从 Google 表格上的文本中提取特定数字?

问题描述

数据如下表所示。我试图从文本中提取小时(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

标签: regexgoogle-sheetsfilter

解决方案


要将小时、分钟和秒提取到单独的列中,您可以使用三个单独的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+)- 第一组:一位或多位数字
    • h-h
  • \s*- 0+ 个空格
  • (?:(\d+)m)?- 一个可选的分钟部分:
    • (\d+)- 第 2 组:一位或多位数字
    • m-m
  • (?:(\d+)s)?- 一个可选的秒部分:
    • (\d+)- 第 3 组:一位或多位数字
    • s-s

推荐阅读