我有一个大型电子表格,可以全天从各个网站导入篮球统计数据,然后在其他表格中对其进行索引匹配。我的问题是有些网站使用的名称是“Lou Williams”,而其他网站使用的是“Louis Williams”。每次使用新数据更新其中一个选项卡时,我都必须手动更正名称之间的所有差异。有没有办法编写一个自动更正我不断修复的10-12个名字的脚本?我希望找到一些方法来做到这一点,比在10次不同时间进行“查找和替换”更容易。
如果这些“拼写检查”仅在3个特定标签上发生,我也会喜欢,但如果它发生在整个工作表中也会没问题。
我已经为解决方案做过一些研究,但我对脚本编程很陌生,以至于我很难翻译其他人的代码。
这是我经常要更正的名称的(当前)列表 不正确 Louis Williams Lou Williams Kelly Oubre Kelly Oubre Jr. Patrick Mills Patty Mills 詹姆斯恩尼斯詹姆斯恩尼斯三世 AlexAbrinesÁlexAbrines Guillermo HernangomezGuillermoHernangómez 伊斯梅尔史密斯伊什史密斯 Sergio RodriguezSergioRodríguez Larry Nance Larry Nance Jr. Luc Mbah a Moute Luc Richard Mbah a Moute Juan HernangomezJuanchoHernangómez 格伦罗宾逊格伦罗宾逊三世
答案 0 :(得分:0)
还有其他方法可以做到这一点,但这会使用“名单”和“#39;表格名称正确且不正确。运行'修复'从自定义菜单和列A名称将名称更改为正确的名称。以下是您可以复制和运行的代码和示例电子表格。
function onOpen() {
SpreadsheetApp.getActiveSpreadsheet().addMenu(
'Correct Names', [
{ name: 'Fix', functionName: 'changeNames' },
]);
}
function changeNames() {
var ss=SpreadsheetApp.getActiveSpreadsheet()
var allSheets = ss.getSheets() //get all sheets
var numSheets=allSheets.length
var s=ss.getSheetByName("Name List")//get the list on names to change.
var lr=s.getLastRow()
var rng= s.getRange(2, 1, lr, 2).getValues()
for(var k=0;k<numSheets;k++){//loop through sheets
var s1=ss.getSheets()[k]
var test =s1.getSheetName()
if (s1.getSheetName()== "RG" || s1.getSheetName()=="NF" || s1.getSheetName()=="SWISH"){ //Sheets to process. '||' is OR
var lr1=s1.getLastRow()
var rng1=s1.getRange(2, 1, lr1, 1).getValues()// Assumes names start on eow 2 Column A. Adjust as needed
for(i=0;i<rng1.length;i++){
for(j=0;j<rng.length;j++){
if(rng1[i][0]==rng[j][1]){//if incorrect names match
rng1[i][0]=rng[j][0] //replace incorrect name with correct name
}}}
s1.getRange(2,1, lr1, 1).setValues(rng1)//replace names
}}}
https://docs.google.com/spreadsheets/d/16DPTDTCqzhYTGVmUpb1wlNFI8ZK7xoJNZvobufXapvg/edit?usp=sharing
更改为仅运行某些工作表。