Shiyu_CC 发表于 2024-7-26 09:53:21

【9.0.6.0】条件格式多个条件时,怎么写 包含/不包含?

本帖最后由 Shiyu_CC 于 2024-7-26 11:49 编辑

如果
          状态=已申请
并且(登录用户的角色 包含    角色A
或者   登录用户的角色 包含    角色B
或者   (登录用户的角色 包含    角色C
并且   登录用户的角色 不包含 角色D))

时,显示某种颜色,怎么写?


Simon.Sun 发表于 2024-7-26 09:53:22

您好,条件格式的自定义公式是当公式计算的结果为真时,设置的格式生效。
然后可以在页面上放置一个单元格,用关键字 CurrentUser.Role 来获取到当前登录用户的全部角色。}
最后基于这个单元格和 Excel 公式去组织判断逻辑,Excel 中判断字符串包含可以用 FIND 函数,比如:

Wilson.Zhang 发表于 2024-7-26 11:50:01

您好!SpreadJS支持为单元格或单元格区域设置的条件格式规则包括值规则、行列状态规则、公式规则等多种规则。理解在您的需求中可以使用公式规则实现,即使用逻辑关系运算符组织条件规则,之后通过ConditionalFormatting:addFormulaRule()将其添加至指定单元格区域即可生效。可参考如下代码:
var cfs = sheet.conditionalFormats;
var style = GC.Spread.Sheets.Style();
style.backColor = 'red';
var range = new GC.Spread.Sheets.Range(2, 0, 1, 1);
cfs.addFormulaRule('=AND(A1=20, B1=30)', style, );
参考API文档了解详情:https://demo.grapecity.com.cn/spreadjs/help/api/classes/GC.Spread.Sheets.ConditionalFormatting.ConditionalFormats#addformularule

Shiyu_CC 发表于 2024-7-26 11:57:34

Wilson.Zhang 发表于 2024-7-26 11:50
您好!SpreadJS支持为单元格或单元格区域设置的条件格式规则包括值规则、行列状态规则、公式规则等多种规则 ...

不能直接写公式吗

Wilson.Zhang 发表于 2024-7-26 14:06:57

Shiyu_CC 发表于 2024-7-26 11:57
不能直接写公式吗

您好!条件格式由条件规则和样式格式两部分组成,条件规则生效后将样式格式装饰至相关单元格区域。当前方案使用的ConditionalFormatting:addFormulaRule()接口的第一个参数正是公式,请问您所言“直接写公式”具体指代什么期望?

Shiyu_CC 发表于 2024-7-26 14:14:01

Wilson.Zhang 发表于 2024-7-26 14:06
您好!条件格式由条件规则和样式格式两部分组成,条件规则生效后将样式格式装饰至相关单元格区域。当前方 ...


需求把判断条件用公式写出来

Shiyu_CC 发表于 2024-7-26 17:53:58

Simon.Sun 发表于 2024-7-26 17:36
您好,条件格式的自定义公式是当公式计算的结果为真时,设置的格式生效。
然后可以在页面上放置一个单元格 ...

状态为已申请,并且 登录用户的角色包含角色A:
=AND(状态="已申请",FIND("角色A",CurrentUser.Role)>0)

状态为已申请,并且 登录用户的角色不包含角色A:
=AND(状态="已申请",FIND("角色A",CurrentUser.Role)<0)

感谢版主,那这样写是对的吗?

Simon.Sun 发表于 2024-7-26 18:02:17

嗯,差不多,注意 CurrentUser.Role 需要放到页面上的单元格上。
FIND("角色A",CurrentUser.Role) 不包含的话,不是小于 0,而是会报错,可以用 IFERROR 处理下。

Shiyu_CC 发表于 2024-7-26 18:16:52

Simon.Sun 发表于 2024-7-26 18:02
嗯,差不多,注意 CurrentUser.Role 需要放到页面上的单元格上。
FIND("角色A",CurrentUser.Role) 不包含 ...

状态为已申请,并且 登录用户的角色不包含角色A:

在页面单元格放一个变量:登录用户的角色=CurrentUser.Role;
=AND(状态="已申请",IFERROR(FIND("角色A",登录用户的角色)>0,0)=0)

这样对吗?

Simon.Sun 发表于 2024-7-29 08:58:48

对的,大佬可以尝试下,有问题继续跟帖交流:lol
页: [1] 2
查看完整版本: 【9.0.6.0】条件格式多个条件时,怎么写 包含/不包含?