【问题标题】:Multiple column searching for email address, find duplicate value and delete多列搜索电子邮件地址,查找重复值并删除
【发布时间】:2017-08-29 02:57:02
【问题描述】:

我处于紧急情况。专家的任何帮助将不胜感激。很抱歉,因为它已被多次询问。我已经尝试了很多方法。但似乎没有什么可以解决我的问题。

我的查询是我有 3 列,并且都有电子邮件地址。我想运行一些东西,它将识别所有列中的任何重复项并删除保持原始值的重复项。我试过删除重复项,但它只适用于一列。我使用了 excel 2013。我已经与您分享了我的数据和最近从这里获取的 VBA 代码。

https://docs.google.com/spreadsheets/d/1iCvKBZbuOyWAzDvKfRvDgT41x8VQO-V-OXMgcBbJQko/edit?usp=sharing

Sub RemoveDups()

Dim wrkSht As Worksheet
Dim lLastCol As Long
Dim lLastRow As Long
Dim i As Long

'Work through each sheet in the workbook.
For Each wrkSht In ThisWorkbook.Worksheets

    'Find the last column on the sheet.
    lLastCol = LastCell(wrkSht).Column

    'Work through each column on the sheet.
    For i = 1 To lLastCol

        'Find the last row for each column.
        lLastRow = LastCell(wrkSht, i).Row

        'Remove the duplicates.
        With wrkSht
            .Range(.Cells(1, i), .Cells(lLastRow, i)).RemoveDuplicates Columns:=1, Header:=xlNo
        End With
    Next i

Next wrkSht

结束子

'此函数将返回对工作表中最后一个单元格或工作表上指定列的引用。 公共函数 LastCell(wrkSht As Worksheet, Optional Col As Long = 0) As Range

Dim lLastCol As Long, lLastRow As Long

On Error Resume Next

With wrkSht
    If Col = 0 Then
        lLastCol = .Cells.Find("*", , , , xlByColumns, xlPrevious).Column
        lLastRow = .Cells.Find("*", , , , xlByRows, xlPrevious).Row
    Else
        lLastCol = .Cells.Find("*", , , , xlByColumns, xlPrevious).Column
        lLastRow = .Columns(Col).Find("*", , , , xlByColumns, xlPrevious).Row
    End If

    If lLastCol = 0 Then lLastCol = 1
    If lLastRow = 0 Then lLastRow = 1

    Set LastCell = wrkSht.Cells(lLastRow, lLastCol)
End With
On Error GoTo 0

结束函数

【问题讨论】:

  • 欢迎来到 SO。你看过this吗?看起来它会解决你的问题。所有列都在一张还是多张上?此外,如果您发布您所写内容的示例以及您试图实现的目标以及您收到的任何错误消息,人们通常更有可能为您提供帮助。您可能还想查看how to ask a question
  • 感谢您的回复。是的,我试过你提到的那个。但是当我运行宏时没有任何变化。我所有的数据都在一张纸上。他们有 A-M 专栏。所有都包含电子邮件地址。我想检查每个电子邮件地址是否重复。如果重复,则将其删除,保留原始值。我在单独的列中有超过 5000 封电子邮件。
  • 通过添加您已更改的代码来编辑您的问题,以便人们可以看到您在做什么。
  • 我已经添加了我的代码和数据。希望人们现在可以帮助我:(

标签: excel vba duplicates formula


【解决方案1】:

这对我有用。只需将工作表编号替换为您正在使用的编号即可。我有 Sheet1 作为持有者。

 Sub RemoveDups()

Dim ws As Worksheet
Dim col As Range

For Each col In Sheet2.Range("A:C").Columns
    Sheet1.Range(col.Address).RemoveDuplicates Columns:=1, Header:=xlNo
Next col

End Sub

【讨论】:

  • 谢谢。我已根据您的指示更改了工作表编号,然后运行它。什么也没发生。
  • 查看您的代码,您似乎需要 sheet2 和 A:C 列。一切都在我这边工作,但在您发布的数据中看起来没有任何重复。
  • 我不知道为什么它没有发生在我身边。如果我粘贴此代码,则提示出现“需要对象”我在大小写和列范围 A:C 中都更改了 sheet2。我还添加了一些重复值以确保。
  • 它不应该说,“需要对象”。所有对象都在该子例程中定义。也许您应该将它添加到一个全新的模块中。我不知道您在那个模块中是否还有其他子例程或什么。
  • 仍然不适合我。谢谢您的帮助。我已经通过 excelablebits add-inn 解决了这个问题。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-17
  • 2017-02-12
  • 2019-12-31
  • 1970-01-01
  • 2011-08-26
相关资源
最近更新 更多