Excel 谷歌工作表-自动查找和替换

Excel 谷歌工作表-自动查找和替换,excel,google-sheets,Excel,Google Sheets,我有一个大的电子表格,每天从各种网站导入篮球统计数据,然后在其他表格中进行索引匹配。我的问题是,一些网站使用像Lou Williams这样的名字,而其他网站使用Louis Williams。每次我用新数据更新其中一个选项卡时,我都必须手动更正名称之间的所有差异。有没有一种方法可以编写一个脚本,自动更正我经常需要修复的10-12个名称?我很想找到一种比查找和替换10次更简单的方法 我还希望这些拼写检查只在3个特定选项卡上进行,但如果在整个工作表中进行,也可以 我已经为解决方案做了一些研究,但我对脚

我有一个大的电子表格,每天从各种网站导入篮球统计数据,然后在其他表格中进行索引匹配。我的问题是,一些网站使用像Lou Williams这样的名字,而其他网站使用Louis Williams。每次我用新数据更新其中一个选项卡时,我都必须手动更正名称之间的所有差异。有没有一种方法可以编写一个脚本,自动更正我经常需要修复的10-12个名称?我很想找到一种比查找和替换10次更简单的方法

我还希望这些拼写检查只在3个特定选项卡上进行,但如果在整个工作表中进行,也可以

我已经为解决方案做了一些研究,但我对脚本编写是如此的陌生,以至于我很难翻译其他人的代码

下面是我经常要更正的名字的最新列表 错对 路易·威廉姆斯娄·威廉姆斯 凯利·奥布雷小凯利·奥布雷。 帕特里克·米尔斯帕蒂·米尔斯 詹姆斯·恩尼斯詹姆斯·恩尼斯三世 Alex AbrinesÁlex Abrines 吉列尔莫·埃尔南戈麦斯吉列尔莫·埃尔南戈麦斯 伊什梅尔·史密斯 塞尔吉奥·罗德里格斯塞尔吉奥·罗德里格斯 拉里·南斯小拉里·南斯 Luc Mbah a Moute Luc Richard Mbah a Moute 胡安·赫尔南戈麦斯·胡安科·赫尔南戈麦斯
格伦·罗宾逊格伦·罗宾逊三世

还有其他方法可以做到这一点,但它使用了一个“姓名列表”表,上面有正确和错误的姓名。从自定义菜单运行“修复”,列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
   }}}

更改为仅运行某些工作表。

这非常有效!我想知道是否有一个小的修改,可以作出。我的电子表格非常大,有很多数据和选项卡,所以运行起来需要一些时间。是否有可能将其限制为仅3个标签RG、NF和SWISH。这是惊人的,运行速度快得多!非常感谢你!所有图纸的名称都在第一列,只有一张图纸的名称在第二列。我尝试将getRange中的第4个数字修改为2,但这不起作用。有什么想法吗?我更改了共享电子表格以处理B列中一张工作表的名称。我在示例中使用了“SWISH”。如果您有任何问题,请告诉我。我无法在共享电子表格中看到脚本。你能分享吗?