如何与嵌套if语句连接串

你好,

我有四个行项目(Text1,Number1,Text2,Number2),如果这些值不为空或不等于零,则我正在尝试连接。请参阅下面的公式。但是我遇到了公式无效的错误。请建议我如何将多个字符串与嵌套if语句串联。

注意:请给我任何想法,仅通过创建系统模块或任何其他模块而嵌套,因为我有尺寸限制。

如果是iSnotblank(text1),则文本1别的

如果编号1> 0,则&“”&text(编号1)别的

如果Isnotblank(text2),则&“”&text2别的

如果number2> 0,则&“”&text(编号2)否则空白

谢谢,

苏曼。

1个接受解决方案

接受的解决方案
Jasonblinn
大师Anaplanner/社区老板

知道了。在这种情况下,我会尝试这样的事情:

文本1

((如果'1号'>0然后“”文本(('1号'别的空白的

((如果isonnotblank(('text2'然后“”'text2'别的空白的

((如果'2号'>2然后“”文本(('2号'别的空白的)

这样,如果无法满足的语句,则基本上是独立的,并计算空白。理想情况下,可以将其划出并以不同的方式串联。

Jasonblinn_3-1619800358627.png

如果在文本位之间可以避免该空间,我会鼓励这样做,因为它会大大减少您所做的串联数量。您甚至可以在这种情况下删除第二if语句,该公式将读取:

文本1

((如果'1号'>0然后文本(('1号'别的空白的

text2'

((如果'2号'>2然后文本(('2号'别的空白的)

希望这可以帮助,

杰森

在原始帖子中查看解决方案

9回复9
安朱
贡献者

你好@suman Reddy,,,,

作为最佳实践,我建议通过集中系统模块中的所有潜在串联来限制您整体上所做的串联。这样,您的if语句只是指一度计算的串联,而不是每次处理IF语句。

您也可以使用布尔值检查字段是否为空白,并在您的语句中使用该字段以进一步优化。

Anju Rao
解决方案架构师 @ anaplan

@anjur感谢您的建议。

但是由于尺寸的限制,我只想使用嵌套IF实现。如果您有其他想法如何处理嵌套,则建议我,如果而不是系统模块或其他模块创建。

此致,

苏曼。

Daanishsoomar
经过认证的Anaplanner大师

@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并将其存储在布尔值中可能会帮助计算更好。但是,如果空间是一个问题,那么以上将是最简洁的方法。尽管性能会稍差一些,但支持节省空间。

@DaanishSoomar不幸的是,我没有ETL工具。

谢谢您的建议。似乎对我有用。

我将等待其他人的更多想法,让我们看看是否有任何创新的想法来到这里。

此致,

苏曼。

Jasonblinn
大师Anaplanner/社区老板

@suman Reddy

好奇您是否需要语言,如果说text1&text2&text2&text3&text 4是否有效?如果其中任何一个是空白的,它们将没有价值,也不会结合任何东西。if语句似乎是不必要的。

杰森

Daanishsoomar
经过认证的Anaplanner大师

那是很棒的见识!还有一个更好,更简单的解决方案!@Jasonblinn

@Jasonblinn对我的要求非常好。

在我的示例中,将所有订单项作为文本项目是我的错误。我也有数字订单项将其更改为文本后的连接。这意味着我的条件基于数字值> 0。我希望这能解决我的要求。

此致,

苏曼。

Jasonblinn
大师Anaplanner/社区老板

知道了。在这种情况下,我会尝试这样的事情:

文本1

((如果'1号'>0然后“”文本(('1号'别的空白的

((如果isonnotblank(('text2'然后“”'text2'别的空白的

((如果'2号'>2然后“”文本(('2号'别的空白的)

这样,如果无法满足的语句,则基本上是独立的,并计算空白。理想情况下,可以将其划出并以不同的方式串联。

Jasonblinn_3-1619800358627.png

如果在文本位之间可以避免该空间,我会鼓励这样做,因为它会大大减少您所做的串联数量。您甚至可以在这种情况下删除第二if语句,该公式将读取:

文本1

((如果'1号'>0然后文本(('1号'别的空白的

text2'

((如果'2号'>2然后文本(('2号'别的空白的)

希望这可以帮助,

杰森

@Jasonblinn我相信这是完美的解决方案。我将实施它。

非常感谢。

苏曼