Google Sheets如何拆分A列时间数据并按B列格式展示
Google Sheets A列时间数据拆分规整为B列格式实现方案
- 逐行处理公式(适合小数据量,下拉填充)
直接在B列对应A列数据的首行(若第一行为表头则选B2单元格)输入以下公式,按住单元格右下角下拉即可批量生成规整结果:=IF(A2="","",TEXT(INDEX(REGEXEXTRACT(A2,"(\d{1,2}:\d{2}\s?[AP]M)\s*-\s*(\d{1,2}:\d{2}\s?[AP]M).*?(\d{1,4}[-/.]\d{1,2}[-/.]\d{1,4})"),1,1),"hh:mm AM/PM") & " - " & TEXT(INDEX(REGEXEXTRACT(A2,"(\d{1,2}:\d{2}\s?[AP]M)\s*-\s*(\d{1,2}:\d{2}\s?[AP]M).*?(\d{1,4}[-/.]\d{1,2}[-/.]\d{1,4})"),1,2),"hh:mm AM/PM") & " " & TEXT(DATEVALUE(INDEX(REGEXEXTRACT(A2,"(\d{1,2}:\d{2}\s?[AP]M)\s*-\s*(\d{1,2}:\d{2}\s?[AP]M).*?(\d{1,4}[-/.]\d{1,2}[-/.]\d{1,4})"),1,3)),"yyyy/mm/dd")) - 整列自动溢出公式(无需手动下拉,适合动态新增数据)
直接在B1单元格输入以下数组公式,后续A列输入新的时间数据时,B列会自动生成对应规整结果,无需手动操作:=ARRAYFORMULA(IF(A:A="","",TEXT(INDEX(REGEXEXTRACT(A:A,"(\d{1,2}:\d{2}\s?[AP]M)\s*-\s*(\d{1,2}:\d{2}\s?[AP]M).*?(\d{1,4}[-/.]\d{1,2}[-/.]\d{1,4})"),,1),"hh:mm AM/PM") & " - " & TEXT(INDEX(REGEXEXTRACT(A:A,"(\d{1,2}:\d{2}\s?[AP]M)\s*-\s*(\d{1,2}:\d{2}\s?[AP]M).*?(\d{1,4}[-/.]\d{1,2}[-/.]\d{1,4})"),,2),"hh:mm AM/PM") & " " & TEXT(DATEVALUE(INDEX(REGEXEXTRACT(A:A,"(\d{1,2}:\d{2}\s?[AP]M)\s*-\s*(\d{1,2}:\d{2}\s?[AP]M).*?(\d{1,4}[-/.]\d{1,2}[-/.]\d{1,4})"),,3)),"yyyy/mm/dd"))) - 自定义调整说明
- 公式默认适配开始时间 - 结束时间 + 任意间隔字符 + 日期结构的混合文本时间数据,自动过滤中间的冗余字符
- 如果需要调整输出格式,可修改
TEXT函数的第二个参数:比如把日期改成yyyy年mm月dd日、时间改成24小时制hh:mm即可 - 如果A列存储的是Sheets可直接识别的原生时间格式(非文本),可直接用
SPLIT(A2,"-")拆分时段后,分别用TEXT格式化即可,不需要正则匹配
注意:使用前请确认A列的时间文本里AM/PM标记、日期分隔符没有特殊自定义字符,否则需要对应调整正则匹配规则。
内容的提问来源于stack exchange,提问作者Ashish Dave
相关产品推荐
相关产品推荐

