簡體   English   中英

Google表格 - 如何找到包含特定文字的第一行編號,然后清除/刪除所有要結束的內容?

[英]Google Sheets - How can I find the first row number containing specific text, and then clear/delete all content to end?

我目前正在導入一堆數據,然后將其拆分為多個列,然后嘗試清除或刪除任何錯誤的行(它是包含一堆廢料行的原始數據導入)。

到目前為止,我已經導入,拆分和排序了數據。 現在我正在嘗試根據A列中的值找到行號,然后選擇表格末尾的所有行來刪除或清除內容。

我已將我的所有數據分成我需要的列(A:J)並進行排序,以便所有相關數據都位於頂部(它是一個可變數據集)所以現在我只是想找到包含“----------------------”的第一行,因為這將是我的第一個“垃圾”行。

outputrange.setValues(output);
pull1.deleteRows(1, 40);
pull1.getRange(2, 1, pull1.getLastRow()-1, 
pull1.getLastColumn()).activate().sort({column:2, ascending: true});

    var removalValues = range.getValues()
    for (var j=0; j<removalValues.length; j++) {
      var rowArray = removalValues[j];
      for (var k=0; k<rowArray.length; k++) {
        var columnValue = rowArray[k];
        if (rowArray[0] === "----------------------") {

          var rowNumber = i;
          pull1.getRange(rowNumber, 1, 1, pull1.getLastColumn()).activate()
        }
      }
    }

我已嘗試上面的代碼循環並找到正確的單元格引用,並暫時突出顯示該行,以確保它正常運行。 目前這部分代碼進程但是沒有做任何事情。 真的,我只需要能夠查看A列中的數據並查找匹配數據的內容,然后為我返回行號,以便將其應用於其他公式。

編輯:我使用一些額外的資源更新了我的代碼,並提出了以下內容。 似乎工作正常,但我不確定它是否是最有效的解決方案:

        var outputrange = pull1.getRange(startRow, 1, LR-startRow+1, 10)
        outputrange.setValues(output);
        pull1.deleteRows(1, 40);
        pull1.getRange(2, 1, pull1.getLastRow()-1, 
        pull1.getLastColumn()).activate().sort({column:2, ascending: true});

        var rangeData = pull1.getDataRange();
        var lastColumn = rangeData.getLastColumn();
        var lastRow = rangeData.getLastRow();
        var searchRange = pull1.getRange(1,1,lastRow-1,lastColumn-1);
        var removalValues = searchRange.getValues();

        for (j=0; j < lastColumn-1; j++) {
          for (k=0; k < lastRow-1; k++) {
            if(removalValues[k][j] === "----------------------") {
              pull1.getRange(k+1, 1, pull1.getLastRow(), 10).deleteCells(SpreadsheetApp.Dimension.ROWS);

            }
          }
        }

需求:

找到指定的文本然后刪除所述文本下面的所有行。


解:

使用textFinder查找文本,然后將結果行傳遞給deleteRows()

function findAndClear() {
  var sh = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var lastRow = sh.getLastRow() + 1;
  var range = sh.getRange(1, 1, lastRow);

  //find specified text and return row number
  var row = range.createTextFinder('----------------------').findNext().getRow();

  //calculate number of rows to delete
  var delRows = lastRow - row;

  //delete rows
  sh.deleteRows(row, delRows);
}

說明:

首先,抱歉,但我已經廢棄了您正在使用的腳本。 沒有必要讓列中的所有值然后循環遍歷每個值,它過於復雜和緩慢。

使用textFinder要快得多,沒有循環遍歷數組,只是在A列中找到第一次出現的字符串並獲取行號。


筆記:

如果您確實想要保留包含字符串的行,請使用:

sh.deleteRows(row + 1, delRows);

參考文獻:

  1. textFinder文檔

暫無
暫無

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

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