繁体   English   中英

查找和替换包含特定值的单元格的脚本

[英]Script to Find & Replace cells that CONTAIN a certain value

由于宏实际上并不记录“查找和替换”操作,因此我试图获取一个脚本来查找和替换可以在多个单元格中找到的某些字符串。 例如; 我有一个包含“Fred and Joe”的单元格,我需要去掉“and”。 在另一个单元格中,我可能有“Fred, Joe”,我需要去掉“,”。

我已经尝试了下面的方法,但它仅在单元格仅包含“AND”时才有效。 当单元格包含“var f”时,我需要脚本来替换该值:

}
function FandR(){
  var sh = SpreadsheetApp.getActiveSpreadsheet();
  var ss = sh.getSheetByName("Sheet1");
  var f = "and";
  var r = ",";
  var data = ss.getDataRange().getValues();
  Logger.log(data.length);
  for (var i = 0; i < data[0].length;i++){
    for (var j = 0; j < data.length;j++){
      if(data[j][i]==f)
      ss.getRange(j+1,i+1).setValue(r);
    }
  }  
}

在您进一步澄清之后,我认为您需要的是:

function FindReplaceMacro() {
  /*
   * Create a regular expression to match
   *   - the string 'and' surrounded by spaces (' and ', ' AND ')
   *   - any non-alphabetic character surrounded by spaces (e.g. ' - ', ' / ', etc.)
   *   - a comma followed by a space (', ')
   */
  var re = / and | \W |, /gi;
  
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = spreadsheet.getActiveSheet();
  var range = sheet.getDataRange();
  var values = range.getValues();
  
  for (var r = 0; r < values.length; r++) {
    for (var c = 0; c < values[r].length; c++) {
      sheet.getRange(r+1, c+1).setValue(values[r][c].replace(re, ' '));
    }
  }
}

你可以在这里测试(你可能需要在宏执行后刷新页面,才能看到修改后的数据)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM