谷歌表单脚本:搜索任何有错误的单元格



在电子表格中,我使用了近2M个单元格,其中使用了许多函数,包括跨越数千行的ArrayFormula等。许多列都是基于以前的列进行计算的,因此错误会级联。

有没有一种方法可以像使用createTextFinder((一样,将单元格的内容与ERROR.TYPE数组进行比较?

或者,除了在所有细胞中循环之外,没有其他更聪明的方法了吗?虽然我可以做到这一点,但我相信还有更有效的方法可以做到

我发现了另一个我改编过的帖子,它在任何列(不是特定的单元格(中都会发现错误,但这对我来说是可以的,而且运行不需要很长时间:

function c_FindCellErrors() {
// Author: Max Hugen
// Date: 2021-01-09
// Purpose: Log all columns in spreadsheet with an error
// Source: Tedinoz
// Link: https://stackoverflow.com/a/60848623/190925
const aErrors = ["#NULL!", "#DIV/0!", "#VALUE!", "#REF!", "#NAME?", "#NUM!", "#N/A", "#ERROR!"];
const sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
for ( i=0; i<sheets.length; i++) {
var sheet = sheets[i];
if ( !sheet.getLastRow() || !sheet.getLastColumn() ) {continue; } // in case it's a blank sheet
var dSheet = sheet.getRange(1,1,sheet.getLastRow(),sheet.getLastColumn()).getValues();
// loop though the columns
for (var col=0; col<dSheet[0].length; col++){
// create an array for the column
var aCol = dSheet.map( function(getCol) { return getCol[col]; } );
// loop through errors
for (var errNum=0; errNum<aErrors.length; errNum++){
// get the error
var errVal = aErrors[errNum]
// if the error exists in this column then response = true
if (aCol.includes(errVal) == true){
Logger.log('ERROR: Sheet: '+sheet.getName()+', Column: '+c_ColumnToLetter(col+1)+', Error: '+(errNum+1)+' - '+errVal);
} } } }
return;
}

相关内容

最新更新