如何从列表中删除所有重复的行

我有一个200.000电子邮件地址(每行一个)的文本文件(或Excel)。 我需要删除所有重复的地址,包括原来的所以这个例子:

a@a.com

b@a.com

b@a.com

c@a.com

d@a.com

应删除b@a.com条目。 任何人都知道如何做到这一点,而不用循环200.000行

把数据放在A2列的A列

在B2中input:

= COUNTIF(A:A,A2)并复制下来

打开自动filter,并为B列,取消选中1框(隐藏独特的项目)

删除可见的行。

以前面的文章为例,我已经为你修改了这个语句,它应该在你运行代码时创build一个包含你想要的数据的新表。 您将需要确保ConnString行指向您的文件并将emailcolumnemailcolumn包含您的电子邮件地址的列的名称。

我假定包含电子邮件地址的工作表被称为Sheet1,数据将转到新工作表的A列(如果需要,更改代码):

 Sub Excel_QueryTable() Sheet2.Cells.ClearContents Dim oCn As ADODB.Connection Dim oRS As ADODB.Recordset Dim ConnString As String Dim SQL As String Dim qt As QueryTable ConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\t.xlsm;Extended Properties=Excel 8.0;Persist Security Info=False" Set oCn = New ADODB.Connection oCn.ConnectionString = ConnString oCn.Open SQL = "Select emailcolumn from [Sheet1$] GROUP BY emailcolumn HAVING COUNT(emailcolumn) = 1" Set oRS = New ADODB.Recordset oRS.Source = SQL oRS.ActiveConnection = oCn oRS.Open Set qt = Worksheets(2).QueryTables.Add(Connection:=oRS, _ Destination:=Range("A1")) qt.Refresh If oRS.State <> adStateClosed Then oRS.Close End If If Not oRS Is Nothing Then Set oRS = Nothing If Not oCn Is Nothing Then Set oCn = Nothing End Sub 

如何使用COUNTIF来查找重复项,然后将其全部过滤掉并删除它们?

即假设你的电子邮件是在列A中,把这个公式放在单元格B1中,并将其复制到底部。

 =COUNTIF(A:A; A1)>1 

如果有重复,这个公式将返回TRUE。 过滤掉所有TRUE并删除这些行!

不需要VBA,只需对列进行sorting,并检查单元格是否具有与单元格或更低单元格相同的值,然后使用filter为TRUE。 像这样的东西:

=OR(A2=A1,A2=A3)

    Interesting Posts