我有一个由两部分组成的问题。我试图根据另一列中的数据更改一列中前几行的值,但遇到了一些问题。在下面的示例中,当状态从 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 来查找后面和前面的值。
非常感谢您的帮助!我不知道你可能会有负滞后。这非常方便。