我有一个文档属性,用作报告的过滤器。这是一个多选列表框。我创建了一个使用此表达式的计算字段(标志):
if(find(Upper(Concatenate([Col1],' | ',[Col2])),Upper('$map("sum([${Property}])", ",")'))>0,"Yes", "No" )
这里的事情是当我从列表框属性中选择一个值时。 "电视| HDTV"那么数据表中的所有这些值开始即将返回,即返回位置即。 "电视| HD" ,"电视| HDTV"两个值都出现在图表上。值组合在我不想要的行中。有什么方法可以完全匹配,或者可以调整这个公式。
我无法将此标志更改为任何其他数据类型,因为大约30个计算基于此字段。
此致
Subro
答案 0 :(得分:2)
我自己想出来。我知道map函数就像一个模板。所以我想为什么不修改模板。这是我使用的代码:
If(Upper(Concatenate([Col1],' | ',[Col2])) in ($map("'${Property}'", ",")),"Yes","No")
这适用于我的价值观。我检查了很多场景。同样对于属性我使用了一个字段来填充它在我已经应用了Upper的位置,所以基本上它已经存在已经作为Upper的值。 @niko:谢谢你的帮助。我相信它也会奏效。为代表我浪费的时间道歉。
此致
Subro
答案 1 :(得分:1)
您可以尝试使用正则表达式替换比较:
If( RXReplace(Concatenate([Col1], ' | ', [Col2]), Concatenate('^', '$map("sum([${Property}])", ",")', '$'), "", "i") = "", "Yes", "No")
如果needle和haystack字符串匹配,RXReplace()
(我将"i"
添加到desensitize case)将返回一个空字符串。
你可能必须选择管道以外的其他连接字符,否则如果不可能,你可能必须与"\\|"
连接。