我想删除空行。第 885 行是非空行,应保留。但是,我的代码说(并在 msgbox 中显示)885 是空的,应该被删除。当它到达 i=884 时,它会打印第 885 行中的实际内容,并说它不会被删除。所以,我很困惑。它似乎正确地作用于数据,但它报告的行号错误。我怀疑你会告诉我偏移量是从零开始的,并且行从 1 开始,所以如果 lastrow=888(从 1 开始),那么我需要减去 1 来匹配偏移量。所以我在电子表格中看到的第 885 行实际上是第 884 行作为偏移量。
但是...当 i=885 行有数据时,偏移量为 884。而当 i=884 时,偏移量为 883...那为什么要打印第 885 行的内容?这里严重混淆。我怎么了?
最后但最重要的是......它删除了错误的行!它怎么能引用正确的数据,但仍然删除错误的行???
var s = SpreadsheetApp.getActiveSheet();
var range = SpreadsheetApp.getActiveSheet().getDataRange();
var i = range.getLastRow();
var msg;
var colNum;
for (; i > 1; i--) { // I like to start at the end
var foundAvalue=0; // reset flag for each row
rowRange = range.offset(i, 0, 1);
var valArray=rowRange.getValues();
var foundAvalue=0;
var msg;
var totalColumns=rowRange.getNumColumns();
colNum=0;
while (colNum < totalColumns && (foundAvalue==0)) {
if (valArray[0][colNum] != '') {
foundAvalue=1;
msg="Row " + i + " =" + valArray[0];
Browser.msgBox(msg);
msg="Row " + i + " will not be deleted";
Browser.msgBox(msg);
}
colNum++;
}
if (foundAvalue == 0) {
msg="Row " + i + " =" + valArray[0] + "WILL be deleted";
Browser.msgBox(msg);
// delete empty row
// s.deleteRow(i);
}
} // end for(i)