簡體   English   中英

谷歌表格腳本:搜索任何有錯誤的單元格

[英]Google Sheets Script: Search For Any Cell With Error

在電子表格中,我使用了近 2M 個單元格,這些單元格使用了很多函數,包括 ArrayFormulas 等跨越數千行。 許多列基於之前的列進行計算,這些列也是計算的,因此錯誤會級聯。

有沒有辦法使用 createTextFinder(),但將單元格的內容與 ERROR.TYPEs 數組進行比較?

或者除了遍歷所有單元格之外沒有更聰明的方法嗎? 雖然我可以做到這一點,但我確信 go 有一種更有效的方法。

我找到了另一篇我改編的帖子,它在任何列(不是特定單元格)中都發現了錯誤,但這對我來說沒問題,並且運行時間不長:

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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM