Google スプレッドシート ドキュメントの特定のシートにセルの列があります。この列は、組み込みの JOIN コマンドを使用して別のシートの複数の値を参照します。
=JOIN(", ",Regular!B3,Regular!B9,Regular!B10,Regular!B11,Regular!B12,Regular!B13,Regular!B14)
そのような各セルの典型的な出力は、カンマで区切られた整数のリストです。
2、5、10、12、13
一部のセルは、次のように範囲を使用します。
=JOIN(", ",Regular!B3:B9)
これらのセルを数式でロックしたい:Regular!$B$3,Regular!$B:$9...
現在、各参照で列と行の両方をロックしたいのですが、行、列、またはその両方を選択できるソリューションの方が優れています。
1) カスタム スクリプトを使用せずにこれを行う方法が見つかりませんでした。
2) 私のカスタム スクリプト ソリューションは未完成です。
function eachCellInRange(range, op) {
var numRows = range.getNumRows();
var numCols = range.getNumColumns();
for (var i = 1; i <= numRows; i++) {
for (var j = 1; j <= numCols; j++) {
op(range.getCell(i,j), i, j);
}
}
};
function lockCell(cell, row, col) {
var formula = cell.getFormula();
if(formula) {
var startIdx = formula.indexOf('(');
if(startIdx > 0) {
//!! REGEX HERE !! //
cell.setValue(formula);
}
}
}
function lockRows() {
var range = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getActiveRange();
eachCellInRange(range, lockCell);
};
式の B3、B9... の部分を識別し、それらを $B$3、$B$9... に変更する正規表現パターンを作成する必要がありますが、B1:B8 の場合でも壊れません。
現在、すべての参照には SheetName という接頭辞が付いています! (Regular!B9:B20 など)、将来的にはそうでないものもあるかもしれないので、最も一般的な解決策が優先されます。