我是使用app脚本的新手,我只是在尝试这个。我想把0转换成空格。
这是我设法创建的代码,但是它不起作用,我不知道如何修复它。
function zero() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
var selectedRange = ss.getActiveRange()
var selectedValues = selectedRange.getValues()
var selectedColumns = selectedRange.getWidth()
var selectedRows = selectedRange.getHeight()
for(i = 0; i<selectedRows; i++) {
for(j = 0; j<selectedColumns; j++) {
if (selectedValues[i][j] = 0) {
selectedRange.getCell(i + 1, j + 1).setValue(" ")
}
}
}
}
function onOpen() {
SpreadsheetApp.getUi()
.createMenu('Blank')
.addItem('Change zero to blank', 'zero')
.addToUi();
}
当我看到你的脚本时,我认为你的if (selectedValues[i][j] = 0) {}
的if语句需要修改。如果单元格值为0
的编号,请使用===
代替==
。所以,当你的脚本被修改时,请按如下方式修改:
修改脚本:
function zero() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var selectedRange = ss.getActiveRange();
var selectedValues = selectedRange.getValues();
var selectedColumns = selectedRange.getWidth();
var selectedRows = selectedRange.getHeight();
for (i = 0; i < selectedRows; i++) {
for (j = 0; j < selectedColumns; j++) {
if (selectedValues[i][j] === 0) {
selectedRange.getCell(i + 1, j + 1).setValue(" ");
}
}
}
}
如果您想将
0
的编号改为空白,也可以使用selectedRange.getCell(i + 1, j + 1).setValue(null);
代替selectedRange.getCell(i + 1, j + 1).setValue(" ");
。我认为在循环中使用
setValue
时,过程成本会很高。在您的情况下,可以使用以下脚本:function zero() { var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var selectedRange = ss.getActiveRange(); selectedRange.createTextFinder("0").matchEntireCell(true).replaceAllWith(" "); // or .replaceAllWith(""); }
引用:
- 如果其他…
- createTextFinder (findText)