MS Excel的条件数据validation
我阅读了一些帮助进行条件(或dynamic)数据validation的教程,但是它通常是基于之前的selectdynamic生成列表项select等。
我想要的是,让我说我有
columnA : columnB telephone_number : 911 name: peterparker
是否有可能根据columnA中select的内容dynamic指定columnB上的数据validation规则? 如果它的telephone_number,我想检查列B中的相应的单元格是一个自然数,如果它是一个名字,我想检查一个string一定的长度。 当然我限制了用户可以在columnA中input的string选项。
数据validation的替代方法是条件格式化 。 后者的好处是它更通用。 我们可以有以下设置:
那么如果我们定义一个名字DynamicValidation
,如下所示:
validation框中的公式是
=EVALUATE(SUBSTITUTE(VLOOKUP(Sheet1!$A2,Sheet1!$D$2:$E$3,2,0),"()","("&ADDRESS(ROW(),2)&")"))
EVALUATE
不能在任何工作表单元中使用, 但可用于命名范围。 但是,您必须将自己的图书保存为启用macros,因为它是源自Excel 4.0
的遗留macros。 它做的是以下几点:
- 查看
List1
中的值并find需要检查的公式(VLOOKUP
)。 - 用感兴趣的单元格值replace
"()"
(并加回括号)。
然后,如果您打开一个条件格式框( Home
选项卡, Conditional Formatting
, New Rule
, Use a formula to determine....
),并input公式=Not(DynamicValidation)
像这样:
那么每个不符合公式的单元格将变成红色。 我也试着用数据validation,但它不工作,除非我们每次更改List 2
构builddepencency树..我不知道为什么..但只有条件格式工作:)下面是一些截图:
好处是我们可以改变validation标准而不用硬编码。 我希望这有帮助!
以下公式自定义validation规则将做到:
=IF(A1="telephone_number";ISNUMBER(B1);IF(A1="name";LEN(B1)=8;TRUE))
这是B1
单元格的示例。 你可以select更广泛的范围和结合$
来适应你所有的范围。