在两张表中find两列中的重复项

我需要比较两个不同的工作表中的两列,找出重复项:比较'Sheet2'中的列C到'Sheet1'中的E列。 作为一个样本,我只用了一些,但是:

Column E in Sheet1 has 2,000 rows of data. Column C in Sheet2 has ~ 100 rows of data. 

页面截图: http : //postimg.org/image/jtuinkqgz/

工作表Sheet1
#1  - 其实通过Dropbox

Sheeet2
#2  - 实际上通过Dropbox

链接到示例Excel文件 。

 Option Explicit Sub CompareColumns() '--------------------------------------------------------------------------------------------------- This module loops through two columns in Excel and identifies items without a match. The columns can be on different sheets. ----------- '--------------------------------------------------------------------------------------------------- Dim strCol1 As String 'First Column Location Dim strCol2 As String 'Second Column Location Dim strColResults As String 'Output Column Dim strSheetname1 As String 'First sheet name Dim strSheetname2 As String 'Second sheet name Dim iListStart As Integer 'Row where List Begins Dim strTemp As String Dim i As Integer, j As Integer Dim iLastRow1 As Integer, iLastRow2 As Integer '---Edit these variables---' strSheetname1 = "Sheet1" strSheetname2 = "Sheet2" strCol1 = "A" strCol2 = "C" 'strColResults = "B" iListStart = 1 '--------------------------' iLastRow1 = Sheets(strSheetname1).Range(strCol1 & "50000").End(xlUp).Row iLastRow2 = Sheets(strSheetname2).Range(strCol2 & "50000").End(xlUp).Row 'error check If iListStart > WorksheetFunction.Min(iLastRow1, iLastRow2) Then MsgBox ("List not found. Perform logic check on input variables.") Exit Sub End If Sheets(strSheetname1).Range(strCol1 & iListStart & ":" & strCol1 & iLastRow1).Interior.ColorIndex = 0 Sheets(strSheetname2).Range(strCol2 & iListStart & ":" & strCol2 & iLastRow2).Interior.ColorIndex = 0 strTemp = "<<" If iLastRow2 > iLastRow1 Then 'switch the order strTemp = strCol1 strCol1 = strCol2 strCol2 = strTemp strTemp = strSheetname1 strSheetname1 = strSheetname2 strSheetname2 = strTemp strTemp = ">>" End If 'Identify unmatched items in long column For i = iListStart To WorksheetFunction.Max(iLastRow1, iLastRow2) For j = iListStart To WorksheetFunction.Min(iLastRow1, iLastRow2) If UCase(Sheets(strSheetname2).Range(strCol2 & j)) = UCase(Sheets(strSheetname1).Range(strCol1 & i)) Then 'Range(strColResults & i) = i & " to " & j Exit For ' Stops at first match ElseIf j = WorksheetFunction.Min(iLastRow1, iLastRow2) Then 'Range(strColResults & i) = strTemp Sheets(strSheetname1).Range(strCol1 & i).Interior.Color = 255 End If Next j Next i 'Identify unmatched items in short column If strTemp = "<<" Then strTemp = " >>" Else strTemp = " <<" End If For i = iListStart To WorksheetFunction.Min(iLastRow1, iLastRow2) For j = iListStart To WorksheetFunction.Max(iLastRow1, iLastRow2) If UCase(Sheets(strSheetname1).Range(strCol1 & j)) = UCase(Sheets(strSheetname2).Range(strCol2 & i)) Then Exit For ElseIf j = WorksheetFunction.Max(iLastRow1, iLastRow2) Then 'Range(strColResults & i) = Range(strColResults & i) & strTemp Sheets(strSheetname2).Range(strCol2 & i).Interior.Color = 255 End If Next j Next i End Sub 

如何在列C中find重复项,并可能将Sheet2的C列的副本与Sheet1的列E相重复?

似乎不是什么这个OP想要的,但似乎是一个非常类似的要求的其他人的一个不错的select:在Sheet2中selectColumnC和HOME>样式 – 条件格式,新规则…, 使用公式来确定哪些单元格格式化 在此公式为真的情况下格式化值

 =COUNTIF(Sheet1!E:E,C1) 

格式化... ,select您select的格式,OK,OK。

如果你想要一个VBA解决scheme,你可以使用这个:

 Sub test() Dim ws1 As Worksheet, ws2 As Worksheet Dim lR1&, lR2 Dim rng As Range, Frng As Range Set ws1 = Worksheets("Sheet1") 'Change this to whatever sheet name Set ws2 = Worksheets("Sheet2") 'Same as above With ws1 lR1 = .Cells(.Rows.Count, 3).End(xlUp).Row End With With ws2 lR2 = .Cells(.Rows.Count, 5).End(xlUp).Row End With For Each rng In ws1.Range("C1", "C" & lR1) 'Edit this to the range where the values are located you want to find the duplicates of Set Frng = ws2.Range("E1", "E" & lR2).Find(what:=rng.Value, LookIn:=xlValues, LookAt:=xlWhole, _ MatchCase:=False, SearchFormat:=False) If Not Frng Is Nothing Then Frng.Interior.Color = 255 End If Next rng End Sub 

但请注意,这是大小写敏感的。