Google Sheets从文本字符串动态提取时长的技术问询
在Google Sheets中从文本字符串动态提取并计算时长
步骤1:提取天、小时、分钟作为中间值
由于REGEXEXTRACT不支持前后查找,我们可以结合IFERROR处理不同格式的文本(部分字符串可能缺少天/小时/分钟单位),分别提取各时间单位:
- 提取天数:匹配文本中的数字+“天”组合,无对应内容则返回0
=IFERROR(REGEXEXTRACT(A1,"(\d+)\s*天"),0) - 提取小时数:匹配数字+“小时”组合
=IFERROR(REGEXEXTRACT(A1,"(\d+)\s*小时"),0) - 提取分钟数:匹配数字+“分钟”组合
=IFERROR(REGEXEXTRACT(A1,"(\d+)\s*分钟"),0)
步骤2:计算最终时长(两种进制可选)
假设提取的天数、小时数、分钟数分别在B1、C1、D1单元格,可按以下方式计算总时长:
方式1:分钟按60进制转换为小时小数
将分钟转换为小时的十进制形式(如15分钟=0.25小时),总时长以小时为单位:
=B1*24 + C1 + D1/60
方式2:分钟按100进制转换
直接将分钟作为小时的百分位(如15分钟=0.15小时):
=B1*24 + C1 + D1/100
合并为单公式(无需中间列)
若不想单独提取中间值,可将提取与计算合并为一个公式:
- 60进制总时长:
=IFERROR(REGEXEXTRACT(A1,"(\d+)\s*天"),0)*24 + IFERROR(REGEXEXTRACT(A1,"(\d+)\s*小时"),0) + IFERROR(REGEXEXTRACT(A1,"(\d+)\s*分钟"),0)/60 - 100进制总时长:
=IFERROR(REGEXEXTRACT(A1,"(\d+)\s*天"),0)*24 + IFERROR(REGEXEXTRACT(A1,"(\d+)\s*小时"),0) + IFERROR(REGEXEXTRACT(A1,"(\d+)\s*分钟"),0)/100
说明
如果文本中时间单位是缩写(如“d”“h”“m”),只需修改正则中的单位部分即可,例如将"\s*天"改为"\s*d"。
内容的提问来源于stack exchange,提问作者Osm
相关产品推荐
相关产品推荐

