スクリプト インデックスに見つかりません。JSL で終了してください。どうもありがとうございます!

Iwx228 は興味深いウィッシュ リスト項目を表示しますが、提供されている例は、ユーザーが選択した行がある典型的な JSL の使用例ではありません。
Excel VBA には、グローバル置換を行うためのスプレッドシート メソッド (関数) があります。JMP の Substitute() および Substitute Into() 関数は、正規表現のオーバーヘッドなしでこのユーザーのニーズを満たすことができます。これは、パターンの要件がなく、グローバルな置換だけであったためです。 不足しているのは、それを取得して現在の選択に適用することだけです。 論理構文は次のようになります。
dt << Replace( searchStr, replaceStr, 選択の引数は、行と選択された列またはすべてを選択するか、.....)
以下は、ReplaceCell() という名前のプロトタイプ スクリプトと使用例です。
注意すべきいくつかの項目:
- 現在のデータに適用されます。 現在のデータ テーブルがない場合は中止します。
- 列が選択されていない場合は中止します。 行が選択されていない場合は、選択された列のすべての行が使用されます。
- 書かれているように、この関数は Character 列にのみ適用されます。 char() および num() 関数を使用して、数値列に拡張できます。
- 行ごとに置換するため、ループは 1 回発生します。
- これは、以前に投稿した LFunc() を使用して列でかなり迅速に行うことができましたが、これを単純にしたかったのです。
- JSL には Include() を使用します。 CTRL + F はすでにこれを行っているため、アドインにする必要はありません
ReplaceCell = Function({src,rpl},{cdt, scol, srow, i, j, val},
if(ntable()>0, cdt=current data table(), throw("no table available"));
scol = cdt << get selected columns;
if(nitems(scol) ==0, throw("no columns are selected...aborting"));
srow = cdt << get selected rows();
if (nrow(srow)==0, srow = Transpose(1::nrow(cdt)) ); //if no rows are selected, assume the entire column.
for(i=1, i<=nrow(srow), i++,
for(j=1, j<=nitems(scol), j++,
val = scol[j][srow[i]];
if( IsString(val), scol[j][srow[i]] = Substitute(val, src, rpl) )
);
)//end for i
); //end function
//test cases create a new table with 2 selected columns
ndt = New Table( "Test 1",
Add Rows( 10 ),
New Column( "A",
Character,
"Nominal",
Set Values(
{"A7", "B7", "C7", "D7", "E7", "F7", "G7", "A9", "A79", "A707"}
)
),
New Column( "B",
Character,
"Nominal",
Set Values(
{"M7", "M77", "M07", "MX7", "E7", "E2", "E3", "F9", "G27", "M99"}
)
)
);
//replace all 7's with 1's
ReplaceCell("7","1"); //aborts no selected columns
ndt:A << set selected(1);
ndt:B << set selected(1);
//replace all 7's with 1's
ReplaceCell("7","1");
ndt << bring window to front;
//now try it with selected rows
ndt << select rows([1,2,4,7,9,10]);
ReplaceCell("1","6");
ndt << bring window to front;それはあなたが望むものを達成するためにJSLでコーディングできるすべての方法ではありませんが、Ianの提案は私が解決策として提案したものです.
これは、複数のチェックボックスが選択されていない「セル全体の値に一致」の場合の置換の結果です。ありがとうございます!

私の理解が正しければ、「Match()」JSL 式の使用を検討してください。 「Cols > Recode」を使用して、以下のコードを生成しました。

結果の数式列のJSLを検査します。 そして、「はい」、JSL は VBA とは大きく異なります。 「Help > Books > Scripting Guide」を参照するか、トレーニングを受けることを検討してください。
NamesDefaultToHere(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
Wait(3);
dt << New Column( "Age 2",
Character,
"Ordinal",
Formula(
Match( :age,
12, "Twelve",
13, "Thirteen",
14, "Fourteen",
15, "Fifteen",
16, "Sixteen",
17, "Seventeen",
Format( :age, "Fixed Dec", 5, 0 )
)
)
);これが新しいケースである場合、この JSL はあまり効率的ではありません。新しいインスタンス用にコードを改善できますか?ありがとう!

これはそれを行う1つの方法です
dt = Current Data Table();
dt:class[dt << get rows where( dt:class == "A1" )] = "A9";
完全に一致した置換でのみ機能する方法で JSL を記述しようとしましたが、少数の文字だけを置換したくない場合は、どのように JSL を記述しますか?ありがとう!

あなたが使用することができますデータ テーブルの添え字付け:
NamesDefaultToHere(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
Wait(3);
maleRows = Loc(dt[0, "sex"], "M");
dt[maleRows, "sex"] = "boy";