|
|
Align 2 Columns Of Matching Data And Strip Out Non-Matched Data Browse this data with a requirement to match data in columns B and C - then discard unmatched values |
A |
B |
C |
D |
E |
|
1 | FLEZ054246 | TXEZ061244 | WCG | TX | |
2 | TXEZ061411 | TXEZ059129 | DOUGLAS | FL | |
3 | TXEZ061244 | TXEZ061101 | ERNIE | TX | |
4 | TXEZ061101 | FLEZ059314 | JASON | FL | |
5 | FLEZ054336 | TXEZ064240 | ERNIE | FL | |
6 | TXEZ063075 | TXEZ059503 | MICHEAL | TX | |
7 | FLEZ060652 | TXEZ059027 | CLAIRE | TX | |
8 | FLEZ-054341 | TXEZ059063 | CLAIRE | TX | |
9 | TXEZ060723 | TXEZ059164 | PAUL | FL | |
10 | TXEZ059503 | ||||
11 | FLEZ059314 | ||||
12 | TXEZ059164 | ||||
13 | TXEZ059129 | ||||
14 | TXEZ059063 | ||||
15 | TXEZ059051 | ||||
16 | TXEZ059027 |
The VB looks like this
Sub test() Dim a, b, i As Long, ii As Integer With Range("b1", Range("b" & Rows.Count).End(xlUp)) a = .Value ReDim Preserve a(1 To UBound(a, 1), 1 To 4) b = Range("c1", Range("c" & Rows.Count).End(xlUp)).Resize(, 3).Value With CreateObject("Scripting.Dictionary") .CompareMode = vbTextCompare For i = 1 To UBound(a, 1) .Add a(i, 1), i Next For i = 1 To UBound(b, 1) If .exists(b(i, 1)) Then For ii = 2 To 4 a(.Item(b(i, 1)), ii) = b(i, ii - 1) Next End If Next End With .Resize(, 4).Value = b End With End Sub |
And the result looks like this
A |
B |
C |
D |
E |
|
1 |
TXEZ061244 | WCG | TX | #N/A | |
2 |
TXEZ059129 | DOUGLAS | FL | #N/A | |
3 |
TXEZ061101 | ERNIE | TX | #N/A | |
4 |
FLEZ059314 | JASON | FL | #N/A | |
5 |
TXEZ064240 | ERNIE | FL | #N/A | |
6 |
TXEZ059503 | MICHEAL | TX | #N/A | |
7 |
TXEZ059027 | CLAIRE | TX | #N/A | |
8 |
TXEZ059063 | CLAIRE | TX | #N/A | |
9 |
TXEZ059164 | PAUL | FL | #N/A | |
10 |
#N/A | #N/A | #N/A | #N/A | |
11 |
#N/A | #N/A | #N/A | #N/A | |
12 |
#N/A | #N/A | #N/A | #N/A | |
13 |
#N/A | #N/A | #N/A | #N/A | |
14 |
#N/A | #N/A | #N/A | #N/A | |
15 |
#N/A | #N/A | #N/A | #N/A | |
16 |
#N/A | #N/A | #N/A | #N/A |