请帮我实现在值范围内替换文本并将其返回到另一个范围。
我现在尝试使用此脚本,但它只接受来自A1的值:
function replaceBat() {
var ss = SpreadsheetApp.getActiveSheet();
var AAA = ss.getRange("A1:A1000").getValue();
var AAAString = AAA.toString()
.replace("1","2")
.replace("5","6")
//and more than 50 terms;
var prov = ss.getRange("B1:B1000");
prov.setValue(AAAString);
}
在A1范围内:A1000 - 要更改的值,
B1:B1000 - 返回更改值的范围。
例如: 我们有:
A1 12541
我们需要:
B1 22642
所有细胞都是如此
答案 0 :(得分:1)
试试这个脚本。当然,您必须根据需要更改数组'toBhaChanged'和'changeWith'。确保需要替换的字符和要替换它的字符在各自的数组中处于相同的“位置”。
function replaceBat() {
var ss = SpreadsheetApp.getActiveSheet(),
arr = [];
ss.getRange("A1:A1000")
.getValues()
.forEach(function (value) {
var changeWith = ["2", "6", "notest", "/"],
toBeChanged = ["1", "5", "test", "@"] //add characters to be changed here, the characters you want to change these with in the same 'place' in the above array.
.map(function (c, i) {
return value = replaceAll(value.toString(), c, changeWith[i])
})
arr.push([value])
});
ss.getRange("B1:B1000")
.setValues(arr)
}
function replaceAll(v, c, r) {
return v.indexOf(c) > -1 ? v.replace(new RegExp(c, "g"), r) : v;
}
编辑:如果您希望在一个数组中检查和替换值(根据注释中的请求),请将第一个脚本更改为:
function replaceBat2() {
var ss = SpreadsheetApp.getActiveSheet(),
arr = [];
ss.getRange("A1:A1000")
.getValues()
.forEach(function (value) {
[["1", "2"], ["5", "6"], ["test", "notest"], ["a", "/"]]
.map(function (c, i) {
return value = replaceAll(value.toString(), c[0], c[1])
})
arr.push([value])
});
ss.getRange("B1:B1000")
.setValues(arr)
}
A(可能更快?)替代第二个函数(replaceAll)将是:
function replaceAll(v, c, r) {
return v.indexOf(c) > -1 ? v.split(c)
.join(r) : v;
}