【问题标题】:Google sheets loop search for string and clear adjacent cells谷歌表格循环搜索字符串并清除相邻单元格
【发布时间】:2016-02-17 20:38:29
【问题描述】:

我正在尝试在 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 (here) 提供的这个脚本,但它是删除整行,我不想删除行,只是清除其中的一些内容:

/* 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()
   }}
}

【问题讨论】:

    标签: javascript loops search google-apps-script google-sheets


    【解决方案1】:

    试试这个:

     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()
       }}}
    

    【讨论】:

      猜你喜欢
      • 2022-01-24
      • 2022-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-11
      • 1970-01-01
      相关资源
      最近更新 更多