【问题标题】:Data validation using regular expressions in Google Sheets在 Google 表格中使用正则表达式进行数据验证
【发布时间】:2023-03-14 22:36:01
【问题描述】:
我在 gSheets 中使用以下日期/时间格式:
4 月 1 日 11:00
我想知道当格式有任何不同时,是否可以使用数据验证(或任何其他功能)来报告错误(将红色小三角形添加到单元格的角落)。
给定格式的可能值:
- 01 -> 01-31 之间的任意数字(但不是“1”,必须有前导零)
- 空格
- Apr -> 3 个字母一个月(一月、二月、三月...十二月)
- 空格
- 在
- 空格
- 11 -> 24 小时制小时 (00, 01...23)
- :
- 00 -> 分钟 (00, 01,...59)
有什么方法可以验证单元格是否包含上述格式的“文本/数据”?
非常感谢您的帮助。
贾内克
【问题讨论】:
标签:
regex
validation
google-sheets
spreadsheet
【解决方案1】:
正确的做法是在 Google 表格中使用正则表达式和“regexmatch()”函数。对于给定的示例,我制作了以下正则表达式:
[0-3][0-9](一月|二月|三月|四月|五月|六月|七月|八月|九月|十月|十一月|十二月)在 [0-2][0-9]: [0-5][0-9]
流程:
- 选择要验证的单元格范围
- 转到数据 > 数据验证
- 在 Criteria 下选择“Own pattern is”(不确定 EN 中使用的确切翻译)
- 粘贴:=regexmatch(to_text(K4);“[0-3][0-9](一月|二月|三月|四月|五月|六月|七月|八月|九月|十月|十一月|十二月) [0-2][0-9]:[0-5][0-9]")
- 确保“to_text(K4)”中有一个左上角单元格,而不是“to_text(K4)”中的 K4
- 保存
希望它可以帮助某人:)
【解决方案2】:
您可以尝试数据验证公式:
=not(iserror(SUBSTITUTE(A1," at","")*1))*(len(A1)=15)*(right(A1,2)*1<61)
-
not(iserror(SUBSTITUTE(A1," at","")*1)) 检查所有声明是否为合法日期
-
(len(A1)=15) 检查日期是否输入 2 位数字
-
(right(A1,2)*1<61) 时间太长了,出于某种原因,01 Apr at 11:99 是合法日期..