你好 - 我是 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
)
)