如何检查单元格内非空文本行是否以(Completed mm/dd/yy)结尾?
解决Google Sheets单元格多行文本结尾格式检查问题
需求说明
需要检查单元格内每一行非空文本是否以(Completed mm/dd/yy)格式的日期字符串结尾,单元格内文本行以**空行(两个换行符)**分隔。
正则表达式说明
匹配目标格式的正则为:
\(Completed \d{2}/\d{2}/\d{2}\)$
各部分含义:
\(和\):转义正则中的特殊字符,匹配实际的括号Completed:匹配固定文本(注意末尾空格)\d{2}:匹配00-99的两位数字,对应月份、日期、年份的两位格式$:锚定到行的结尾,确保格式出现在文本最后
检查公式(整体验证)
假设目标单元格为A1,使用以下公式可直接返回整体检查结果:
=ARRAYFORMULA( LET( split_lines, SPLIT(A1, CHAR(10)&CHAR(10)), non_empty, FILTER(split_lines, TRIM(split_lines)<>""), results, REGEXMATCH(non_empty, "\(Completed \d{2}/\d{2}/\d{2}\)$"), IFERROR(IF(ALL(results), "所有非空行均符合要求", "存在不符合要求的行"), "无有效内容") ) )
公式逻辑:
SPLIT(A1, CHAR(10)&CHAR(10)):按空行拆分单元格内容为数组FILTER(...):过滤拆分后得到的空行(处理首尾空行情况)REGEXMATCH(...):对每一行做格式匹配,返回布尔值数组ALL(results):判断所有行是否都符合要求,输出对应提示
逐行检查公式
如果需要查看每一行的检查结果,使用以下公式:
=ARRAYFORMULA( LET( split_lines, SPLIT(A1, CHAR(10)&CHAR(10)), non_empty, FILTER(split_lines, TRIM(split_lines)<>""), IF(REGEXMATCH(non_empty, "\(Completed \d{2}/\d{2}/\d{2}\)$"), "符合", "不符合") ) )
内容的提问来源于stack exchange,提问作者William Toscano
相关产品推荐
相关产品推荐

