你好,
我有四个行项目(Text1,Number1,Text2,Number2),如果这些值不为空或不等于零,则我正在尝试连接。请参阅下面的公式。但是我遇到了公式无效的错误。请建议我如何将多个字符串与嵌套if语句串联。
注意:请给我任何想法,仅通过创建系统模块或任何其他模块而嵌套,因为我有尺寸限制。
如果是iSnotblank(text1),则文本1别的
如果编号1> 0,则&“”&text(编号1)别的
如果Isnotblank(text2),则&“”&text2别的
如果number2> 0,则&“”&text(编号2)否则空白
谢谢,
苏曼。
解决了!去解决方案。
知道了。在这种情况下,我会尝试这样的事情:
文本1
和((如果'1号'>0然后“”和文本(('1号')别的空白的)
和((如果isonnotblank(('text2')然后“”和'text2'别的空白的)
和((如果'2号'>2然后“”和文本(('2号')别的空白的)
这样,如果无法满足的语句,则基本上是独立的,并计算空白。理想情况下,可以将其划出并以不同的方式串联。
如果在文本位之间可以避免该空间,我会鼓励这样做,因为它会大大减少您所做的串联数量。您甚至可以在这种情况下删除第二if语句,该公式将读取:
文本1
和((如果'1号'>0然后文本(('1号')别的空白的)
和text2'
和((如果'2号'>2然后文本(('2号')别的空白的)
希望这可以帮助,
杰森
你好@suman Reddy,,,,
作为最佳实践,我建议通过集中系统模块中的所有潜在串联来限制您整体上所做的串联。这样,您的if语句只是指一度计算的串联,而不是每次处理IF语句。
您也可以使用布尔值检查字段是否为空白,并在您的语句中使用该字段以进一步优化。
嘿@suman Reddy,,,,
用这种强度进行文本串联肯定是反对最佳实践的,但我可能会为您提供解决方案。在深入研究之前,只想询问您的团队是否可以访问某种ETL工具,其中可能是数据负载的一部分,您可以在数据到达Anaplan之前执行此串联?
这是解决方案:
如果是iSnotblank(text4),则为文本1&“”&text 2&“&”&text 3&“”&text 4 else
如果是iSnotblank(text3),则文本1&“”&text 2&“”&text3别的
如果是iSnotblank(text2),则文本1&“”&text2别的
如果是iSnotblank(text1),则文本1否则空白
推理,我相信通过扭转串联的顺序,这将在所有可能的情况下运行。而在您的原始公式中,如果Text1不是空白,则该公式将采用文本1并完成(我相信)。
如果有人有反驳的理由将命令倒回原始,那么也很高兴听到对此的想法。这只是我的第一个瞥见的肠道反应。
同样,将if iSnotblank逻辑转换为booleans并将其存储在布尔值中可能会帮助计算更好。但是,如果空间是一个问题,那么以上将是最简洁的方法。尽管性能会稍差一些,但支持节省空间。
好奇您是否需要语言,如果说text1&text2&text2&text3&text 4是否有效?如果其中任何一个是空白的,它们将没有价值,也不会结合任何东西。if语句似乎是不必要的。
杰森
@Jasonblinn对我的要求非常好。
在我的示例中,将所有订单项作为文本项目是我的错误。我也有数字订单项将其更改为文本后的连接。这意味着我的条件基于数字值> 0。我希望这能解决我的要求。
此致,
苏曼。
知道了。在这种情况下,我会尝试这样的事情:
文本1
和((如果'1号'>0然后“”和文本(('1号')别的空白的)
和((如果isonnotblank(('text2')然后“”和'text2'别的空白的)
和((如果'2号'>2然后“”和文本(('2号')别的空白的)
这样,如果无法满足的语句,则基本上是独立的,并计算空白。理想情况下,可以将其划出并以不同的方式串联。
如果在文本位之间可以避免该空间,我会鼓励这样做,因为它会大大减少您所做的串联数量。您甚至可以在这种情况下删除第二if语句,该公式将读取:
文本1
和((如果'1号'>0然后文本(('1号')别的空白的)
和text2'
和((如果'2号'>2然后文本(('2号')别的空白的)
希望这可以帮助,
杰森