【问题标题】:How do find/remove duplicate e-mail addresses in one column?如何在一列中查找/删除重复的电子邮件地址?
【发布时间】:2014-07-30 18:59:28
【问题描述】:

我有一个包含多列的文件,其中一列包含人员的电子邮件地址。有没有办法多次搜索列中的任何电子邮件地址?

我可以尝试按字母顺序列出它们,但在某些单元格中有多个电子邮件地址,所以如果它没有列在第一位,...

我只是想确保同一个人/电子邮件地址不会被列出两次。

现在,如果执行此操作的说明是使用公式,您能否具体说明我需要采取的步骤?我从不使用公式,对它们的工作原理以及不同代码的含义很天真。

包含电子邮件地址的列是 Z 列,大约有 2200 行。

【问题讨论】:

  • 如果你不想搞清楚代码,那么我建议手动逐行将每个地址放在自己的行中,然后排序并过滤掉骗子。这将需要一两个小时,或者也许你在这里很幸运,有人为你写了......

标签: google-apps-script


【解决方案1】:

正如 Joe T 在 cmets 中所说,您一定很幸运能找到为您编写代码的人,他是对的,SO 不是要求现成代码的地方,但由于“重复电子表格”可能是多年来最受欢迎的主题,而且由于您的用例引入了一个新参数(单元格中的多个值),我发现它可能值得给您一个提示。

因为不想在这上面花太多时间,所以我保持简单明了,只走了一半……(它可以增强,也可能有一些弱点)

此脚本在您的 SS 中添加一列,并在有重复的每一行中写入 X

它不会删除任何内容,因为我认为当一个项目有多个电子邮件而另一个有单个电子邮件(或不同的一对但具有共同值......)时,无法决定删除哪个,所以你会必须决定删除哪个,但X 肯定会有所帮助! (对AA 列进行排序以使其更容易!)

代码如下:

function highlightDuplicates() {
  var sh = SpreadsheetApp.getActive().getActiveSheet();
  sh.insertColumnAfter(26).getRange(1,27).setValue('duplicates');
  var data = sh.getDataRange().getValues();
  data.shift();// remove headers from data
  data.sort(function (x,y){// sort on column Z
   var xp = x[25];
   var yp = y[25];
   return xp == yp ? 0 : xp < yp ? -1 : 1;
 });  
  for(var n in data){
    var row = data[n];
    var email = row[25]
    for(var d in data){
      if((data[d][25].indexOf(email)>-1 || email.indexOf(data[d][25])>-1) && d!=n){
        row[26]='X';// if common data, mark with X
      }
    }
    data[n]=row;// update date
  }
  sh.getRange(2,1,data.length,data[0].length).setValues(data);//update sheet
}

【讨论】:

    猜你喜欢
    • 2019-12-17
    • 2017-08-29
    • 2011-08-26
    • 1970-01-01
    • 2018-04-16
    • 2021-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多