谷歌表格循环搜索字符串并清除相邻单元格



我正在尝试在Google表格脚本中获取一个循环,该循环将在A列中搜索文本字符串:"x"并清除B-X列和AC-AH列中的相邻单元格。

编辑:对不起,忘了说我做了什么...

我的 Excel VBA 宏如下所示:

    Dim rng1 As Range
    Dim rng2 As Range
    Set rng1 = ActiveSheet.Range("a11:a50")
    For Each rng2 In rng1
        If rng2 = "x" Then rng2.Offset(0, 1).Resize(, 23).ClearContents
    Next
    Dim rng3 As Range
    Dim rng4 As Range
    Set rng3 = ActiveSheet.Range("a11:a50")
    For Each rng4 In rng3
        If rng4 = "x" Then rng4.Offset(0, 28).Resize(, 6).ClearContents
    Next

我找到了Simon Staton提供的这个脚本(这里),但它是删除整行,我不想删除该行,只是清除其中的一些内容:

/* Delete rows */
function deleteRows() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var rows = sheet.getDataRange();
  var numRows = rows.getNumRows();
  var values = rows.getValues();
  var toDelete = [];
  for (var row = 0; row < values.length; row++) {
    for(var column = 0;column<values[row].length;column++){
      if (values[row][column].indexOf("WordThatExistsInOneRow") > -1){
        toDelete.push(row);
      }
    }
  }
  for(var deleteRow = toDelete.length-1; deleteRow >= 0;deleteRow--){
    sheet.deleteRow(toDelete[deleteRow]+1);
  }
  SpreadsheetApp.flush();
};

结果:这是我的结尾,感谢Ed Nelson在下面的回答......我不得不从第 11 行开始,而不是第一行:

function copyfeb() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var lr = sheet.getLastRow()
  var lc = sheet.getLastColumn()
  var a = sheet.getRange(11, 1, lr, lc).getValues();
  for (var i = 0; i < a.length-1; i++) {
          if (a[i][0].indexOf("x")!= -1){
           var delete1=sheet.getRange(i+11, 1, 1, 24)
           var delete2=sheet.getRange(i+11, 29, 1, 6)
           delete1.clearContent()
           delete2.clearContent()
   }}
}

试试这个:

 function deleteRows() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var lr=sheet.getLastRow()
  var lc=sheet.getLastColumn()
  var a = sheet.getRange(2, 1, lr, lc).getValues();
  for (var i = 0; i < a.length-1; i++) {
          if (a[i][0].indexOf("x")!= -1){
           var delete1=sheet.getRange(i+2, 2, 1, 23)
           var delete2=sheet.getRange(i+2, 29, 1, 6)
           delete1.clearContent()
           delete2.clearContent()
   }}}

最新更新