查找和替换包含某个值的单元格的脚本

问题描述

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

我已经尝试了以下方法,但是仅当单元格仅包含“ 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,' '));
    }
  }
}

您可以here对其进行测试(执行宏后可能需要刷新页面,以便查看修改后的数据)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...