替换值范围内的文本并将其 return 替换为另一个范围
Replace text in range of values and return it to another range
请帮助我实现替换值范围内的文本并将其return替换为另一个范围。
我现在尝试使用这个脚本,但它只从 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 - 范围 return 更改值。
例如:
我们有:
A1
12541
我们需要:
B1
22642
所有单元格也是如此
试试这个脚本。当然,您必须根据需要更改数组 'toBeChanged' 和 'changeWith'。确保需要替换的字符和要替换的字符在各自的数组中相同 'position'。
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)
}
第二个函数 (replaceAll) 的替代方案(可能更快?)是:
function replaceAll(v, c, r) {
return v.indexOf(c) > -1 ? v.split(c)
.join(r) : v;
}
请帮助我实现替换值范围内的文本并将其return替换为另一个范围。
我现在尝试使用这个脚本,但它只从 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 - 范围 return 更改值。
例如: 我们有:
A1 12541
我们需要:
B1 22642
所有单元格也是如此
试试这个脚本。当然,您必须根据需要更改数组 'toBeChanged' 和 'changeWith'。确保需要替换的字符和要替换的字符在各自的数组中相同 'position'。
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)
}
第二个函数 (replaceAll) 的替代方案(可能更快?)是:
function replaceAll(v, c, r) {
return v.indexOf(c) > -1 ? v.split(c)
.join(r) : v;
}