我必須使用各種公式處理數據並將輸出存儲在最後一列中。 我能夠成功應用公式並將數據存儲在新列中,但不在同一列中。
例如,
在這張表中,

我正在對存在 USL 值的單元格使用 Formula(abs(Divide(Effect,Subtract( USL,Mean)))*100)) 和
公式(abs(Divide(Effect,Subtract( Mean,LSL)))*100)) 其中存在 LSL 值。 但是對於列名、LSL 和 USL 為空的單元格,我想使用公式:Formula(Divide(abs(Effect)), Mean);
我目前正在處理的腳本是:
dtq = Open("path\formula.jmp");
a = dtq << New Column("Final", Formula(abs(Divide(Effect,Subtract( USL,Mean)))*100));
//);
//:Final << Formula(abs(Divide(Effect,Subtract( USL,Mean)))*100);
b = dtq << New Column("Final1",Formula(abs(Divide(Effect,Subtract( Mean,LSL)))*100));
If( Is Empty( dtq << ColumnName ),
:Final << Formula(Divide(abs(Effect)), Mean);
);
show(b);
我現在得到的輸出是:

而我希望 Final1 的值位於同一列中。 還,
這部分腳本:
If( Is Empty( dtq << ColumnName ),
:Final << Formula(Divide(abs(Effect)), Mean);
);
沒有顯示任何錯誤,但也無法正常工作。 感謝您的任何幫助。
@Dan_Obermiller謝謝你的解決方案。 我有太多的表需要運行相同的公式,所以如果有一個腳本會更好。 非常感謝您的快速解決方案..
假設一行永遠不會同時具有 :LSL 和 :USL 作為非缺失,這將處理您描述的所有情況:
If(
!Is Missing( :LSL ), Abs( :Effect / (:Mean - :LSL) ) * 100,
!Is Missing( :USL ), Abs( :Effect / (:USL - :Mean) ) * 100,
Is Missing( :ColumnName ), Abs( :Effect ) / :Mean
)
這對我來說似乎有點過於復雜。 所有的計算都可以放在一個公式列中:
如果(
缺失( :LSL ) & 缺失( :USL ), Abs( :Effect / :Mean ),
缺少 (:LSL), Abs(:Effect / (:USL - :Mean) ) * 100,
缺少 (:USL), Abs(:Effect / (:Mean - :LSL) ) * 100
)
它不需要編寫腳本。 交互它看起來像這樣:

它給出了這些結果:
