问题描述
由于宏实际上并未记录“查找和替换”操作,因此,我试图获取一个脚本来查找和替换可以在多个单元格中找到的某些字符串。例如;我有一个包含“ 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对其进行测试(执行宏后可能需要刷新页面,以便查看修改后的数据)