在日常工作的Excel使用中,可能大家会遇到需要:限制表格填写人对单元格内填入的内容,
例如:
Ø 某一列只允许填入日期。
Ø 某一列只允许填入整数。
Ø 某一列只允许填入开头为”YP”的Customer ID
Ø 等等
那么,本次我们来了解一下如何完成以上需求。
假设,本次的需求为:当订单类型选择Sample的时候,客户ID只能填写”YP”开头的Customer ID。
1.首先,完成订单类型的下拉菜单如下。

2.对于客户ID填写框(D3单元格)做内容限制
这里简单讲一下LEFT()函数:首先,LEFT函数是用来从指定单元格内的文本字符串的第一个字符开始返回指定个数的字符。
LEFT函数有两个参数,第一个参数是单元格位置,例如下图的D3;第二个参数是一个整数,当你第二个参数是 2的时候,那么就是取出D3单元格的前两个字符。
所以下图中的LEFT( D3, 2) = "YP",意思就是:判断D3单元格从左往右的前两个字符是否等于"YP",如果等于则返回TRUE,否则返回FALSE。
加粗显示的这句话非常非常重要,请务必理解。
各位需要清楚,在Excel里写公式是一个和Excel对话的过程,你写的每一个公式都是在问Excel问题,而Excel会回答你的问题。
任何公式都要返回一个值,
LEFT( D3, 2) = "YP"这个公式返回什么呢?这就像,你对Excel说“D3单元格左边两个字母是YP么?”Excel会回答你“是”或者“否”

3.设置出错警告
经过第二步,我们知道Excel会判断客户ID填写的是否是左边两个字母是YP,但是判断完做什么呢?

我们会发现,当我设置完毕了第2步,客户ID依然可以随便填写。
这是因为Excel只是回答你了TRUE或者FALSE,而这个回答,没有从行动中表现出来。也就是你没有对TRUE或者FALSE设定后续的行动。
按照需求,我们应该禁止用户在订单类型为Sample的时候,填写非YP开头的客户ID。
而Excel只是回答我们TRUE或者FALSE,并没有禁止填写的动作。所以用户依然可以在这个单元格里随便填写。
这时候,我们应该对于返回FALSE结果的时候,设定后续动作。
如下图,依然在数据验证的“出错警告”窗口里,勾选“输入无效数据时显示出错警告”,然后对于出错警告设置标题和错误信息。然后确定

那么,当我们输入非YP开头的客户ID的时候就会弹出错误警告,并阻止你继续后续的输入。
然后你可以点重试,修改输入的客户ID,或者点取消,清空你填写的客户ID。直到你输入的客户ID是YP开头的。

4.设置,仅当订单类型为Sample的时候,客户ID必须为YP开头。
前面我们设置了客户ID必须为YP开头,可是需求是“当订单类型为Sample的时候,客户ID必须为YP开头。”,所以我们还要调整数据验证的公式。
公式调整为 IF(D2="Sample",LEFT(D3,2)="YP",TRUE)
含义为:如果D2(订单类型)等于Sample,则执行限制客户ID开头必须为YP,否则返回TRUE。也就是如果订单类型不是Sample的时候,始终返回TRUE。
而第3步的时候,我们讲过我们在数据验证种填写出错警告,是针对Excel返回False的时候。所以当订单类型不是Sample(订单类型为普通订单)的时候,始终返回True,意味着Excel不会弹出出错警告,也就是用户可以随意填写任何Customer ID。

至此,需求设置完毕。