使用Google表格中的正则表达式进行数据验证

时间:2018-04-20 07:10:29

标签: regex validation google-sheets spreadsheet

我在gSheets中使用以下日期/时间格式:

4月1日11:00

我想知道当格式有任何不同时,是否可以使用数据验证(或任何其他功能)来报告错误(将小红色三角形添加到单元格的角落)。

给定格式的可能值:

  • 01 - > 01-31之间的任何数字(但不是" 1",必须有前导零)
  • 空间
  • 4月 - >每月3封信(1月,2月,3月,12月)
  • 空间
  • 空间
  • 11 - >小时24小时格式(00,01 ... 23)
  • 00 - >分钟(00,01,... 59)

有没有办法验证该单元格包含" text / data"完全按上述格式?

非常感谢您的帮助。

Janek

2 个答案:

答案 0 :(得分:3)

正确的方法是使用正则表达式和" regexmatch()" Google表格中的功能。对于给定的示例,我做了以下正则表达式:

[0-3] [0-9](Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec)at [0-2] [0-9]: [0-5] [0-9]

过程:

  • 选择要验证的单元格范围
  • 转到数据>数据验证
  • 在标准下选择"自己的模式是" (不确定EN中使用的确切翻译)
  • 粘贴:= regexmatch(to_text(K4);" [0-3] [0-9](Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec)在[0-2] [0-9]:[0-5] [0-9]")
  • 确保" to_text(K4)"而不是K4。有一个来自所选范围的左上角单元格
  • 保存

希望它可以帮助某人:)

答案 1 :(得分:1)

您可以尝试使用数据验证公式:

=not(iserror(SUBSTITUTE(A1," at","")*1))*(len(A1)=15)*(right(A1,2)*1<61)

  • not(iserror(SUBSTITUTE(A1," at","")*1))检查所有statemant是合法日期
  • (len(A1)=15)检查日期是否输入2位数
  • (right(A1,2)*1<61)因为某种原因01 Apr at 11:99是合法的约会,因此分钟太多了。