我有一個由兩個部分組成的問題。我試圖根據另一列中的資料更改一列中前幾行的值,但遇到了一些問題。在下面的範例中,當狀態從 Status1 變更為其他任何值(注意綠色儲存格)時,我想變更向上 6 行儲存格(紅色儲存格)的值。

我正在使用的列公式如下。

從表中可以看出,腳本確實在 Row()-6 中插入了一個 99,但在 Row() 中也有一個 99。我不知道最後一個是從哪裡來的。
我在這裡試圖解決的更大問題是我想用 99 填充狀態更改處及上方的所有單元格(所以 Row(), Row()-1, Row()-2, ... , Row ()- 6 均為99)。我嘗試使用 FOR 循環來執行此操作(請參閱下面的第二個腳本),但它什麼也沒做。

我相信您可以看出,我對 JSL 非常無知,因此我們將不勝感激。非常感謝。
由於我沒有你的數據表,這只是一個猜測
Names Default To Here(1);
dt = New Table("Untitled 2",
Add Rows(23),
Compress File When Saved(1),
New Column("S",
Character,
"Nominal",
Set Values(
{"A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A",
"A", "B", "B", "B", "C", "C"}
)
)
);
dt << New Column("R", Numeric, Continuous, Formula(
If(:S == "A" & Lag(:S, -6) != "A",
99
, :S == "A",
Lag(:R)
);
));
您可以使用 Lag 來找出後面和前面的值。
非常感謝您的幫忙!我不知道你可能會有負滯後。這非常方便。