你好 - 我是 jsl 脚本编写的新手,我正在尝试构建一个 jsl 语句,如下所示:
如果 A 列为空,则 C 列 = 空,
否则如果 A 列 < 500 并且 B 列 = 200,C 列 = 0,
否则,如果 A 列 > 500,则 C 列 = 1。
我如何构建 jsl 公式来做到这一点?谢谢!
注意边缘情况:
- A == 500,准确地说
- A<500 且 B != 200
添加 999 作为其他值可能值得,只是为了在出现问题时引起您的注意。 如果秘密
如果 B 是缺失值,则 B!=200 测试将不是是真是假。 上面的示例可能会满足您的期望,但如果 B==200 就在最终的 else 值(例如 999)之前,并且 B 缺失,则它将不会获得 else 值(因为不是 TRUE 或 FALSE )——它丢失了。
它是否正确?
New Table( "Untitled",
Add Rows( 12 ),
New Column( "A",
Numeric,
"Continuous",
Format( "Fixed Dec", 12, 0 ),
Set Values( [., ., 400, 400, 550, 550, ., ., 400, 400, 550, 550] )
),
New Column( "B",
Numeric,
"Continuous",
Format( "Fixed Dec", 5, 0 ),
Set Values( [200, 61, 200, 66, 200, 60, 200, 51, 200, 61, 200, 65] )
),
New Column( "C",
Numeric,
"Ordinal",
Format( "Best", 10 ),
Formula( If( Is Missing( :A ), ., :A < 500 & :B == 200, 0, :A > 500, 1 ) ),
Set Selected
)
);
现在,它可以识别空单元格并正确地将它们填充为空(是的),正确考虑第二个条件并适当设置 0,但它不会达到第三个(else if)条件。也就是说,它永远不会是 1,尽管在很多情况下它应该是 1。
谢谢罗恩。“空”条件由于某种原因未注册。也就是说,如果 :A 为空,则 :C 为 1。
??
@learning_JSL
尝试这个:
names default to here (1);
dt = Current data table();
dt << new column ("C","Numeric", "ordinal", Formula (If(
Is Missing( :A ),.,
:A < 500 & :B == 200, 0,
:A > 500, 1
)));
这是我在彻底搜索 jsl 索引、帮助菜单和谷歌以及大量试验和错误尝试后想到的……但它没有奏效。我的 C 列公式是:
formula(
If(
Is Missing( :column A ), Empty(),
:column A < 500 & :column B == 200, 1,
:columnA > 500, 0
)
)