我在Excel 2010中有3个包含电子邮件地址的列,我需要能够将所有3列缩小到只有唯一值。我不一定需要将剩余的值合并到一个列中,但我绝对需要消除重复。我找到了另一个带有VB的帖子,但它似乎没有用。它只删除了一些副本:
Sub removeDuplicates()
Dim lastCol As Integer
lastCol = 5 'col 5 is column E
Dim wks As Worksheet
Set wks = Worksheets("Sheet1")
Dim searchRange As Range
Set searchRange = wks.Range("A1:A" & wks.Cells(Rows.Count, "A").End(xlUp).Row)
Dim compareArray As Variant
Dim searchArray As Variant
'Get all values from Col A to search against
compareArray = searchRange.Value
For col = lastCol - 1 To 1 Step -1
'Set values to search for matches
searchArray = searchRange.Offset(0, col - 1).Value
'Set values to last column to compare against
compareArray = searchRange.Offset(0, col).Value
For i = 1 To UBound(compareArray)
If compareArray(i, 1) = searchArray(i, 1) Then
'Match found, delete and shift left
Cells(i, col).Delete Shift:=xlToLeft
End If
Next i
Next col
End Sub
谢谢!
答案 0 :(得分:0)
如果这是一项你不必经常做的一次性任务,我建议这样做。
我没有详细地输入整个过程,而是做了一个关于我如何做到这一点的截屏视频(整个过程几乎不花一分钟时间)。
快速概述:
您需要为每个电子邮件列表中的唯一值添加一些临时助手列(每个列表一个),一个'合并列表'列,然后是最后一列。使用'高级'过滤独特的电子邮件。一次过滤选项一列。将这些值粘贴到该电子邮件列表的临时列中,然后清除筛选器。重复,直到遍历每个列,每个临时列都包含每个列中的唯一值。从每个列表中获取唯一身份后,将这些一次性粘贴到“已合并列表”中。列(将结果堆叠在一个长列表中),然后对其执行唯一过滤。将该列表中的唯一身份复制/粘贴到最终列中,清除过滤器,然后您就完成了。
截屏视频如下:
http://screencast.com/t/zL8VmUut
干杯!
答案 1 :(得分:0)
由于第一列是您已经联系过的,所以将第一列与第二列交换,如果在第二列(您已经联系过的那些)上找到电子邮件,则在第三列上写下YES或NO值。
式。
=IF(ISERROR(VLOOKUP(A2,$B$2:$B$11,1,FALSE)),"Not Contacted","Yes")
如您所见,带有“是”状态的那个位于联系人列表中,您只需过滤“未联系”,您将在A列中有一个新的待处理列表。 简单。