本帖最后由 Lynn.Dou 于 2023-2-16 09:53 编辑
背景:
在处理帖子的时候发现很多小伙伴都有这样的需求:
设置某一个单元格,在同时符合条件1、条件2......的前提下,才能允许输入,否则会提示输入无效。
看到这个需求,相信大家第一反应就是使用数据验证,
但是一个单元格只能设置一个数据验证,多条件下该如何设置呢?
SpreadJS数据验证 提供了基于公式的数据验证,所以我们可以利用公式来实现多条件的判断。
内容:
(举例说明更容易理解。)
在A1单元格可输入数字,要求数字最多为两位小数,且A1单元格的值需大于50小于100。
上述需求可拆分为3个条件:
条件1:A1数字 小数位数<=2
条件2:A1>50
条件3:A1<100
S搜索资料得知,使用公式 =LOG10(SUBSTITUTE(A1,".",)/A1) 可以获取A1值的位数。
结合if函数进行判断,公式如下:
=IF((LOG10(SUBSTITUTE(A1,".",)/A1
*(A1>50)*(A1<100),TRUE,FALSE)
再在A1单元格设置该公式验证,代码如下:
spread.options.highlightInvalidData = true;
//如果公式条件返回true,则公式验证器有效。
var dv = GC.Spread.Sheets.DataValidation.createFormulaValidator("IF((LOG10(SUBSTITUTE(A1,\".\",)/A1)<=2)*(A1>50)*(A1<100),TRUE,FALSE)");
sheet.setDataValidator(0, 0, 1, 1, dv, GC.Spread.Sheets.SheetArea.viewport);
输入66.666,验证不通过
输入110.23 验证不通过。
输入66.66,验证通过
其余需求思路同理,在存在多个条件的情况下请思考如何利用公式进行验证。
|
|