我想使用应用程序脚本将工作表中的零更改为空白
I want to change zeros to blanks in sheets using apps script
我刚开始使用应用程序脚本,我只是想尝试一下。我想将零转换为空白。
这是我设法创建的代码,但它不起作用,我不知道如何修复它。
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("");
}
参考文献:
我刚开始使用应用程序脚本,我只是想尝试一下。我想将零转换为空白。
这是我设法创建的代码,但它不起作用,我不知道如何修复它。
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(""); }