Как выровнять дубликаты на одинаковых строках в Excel
Это простой вопрос, на который я не могу ответить.
У меня есть два столбца, подобные этим в Excel:
Col1 Col2
A C
B I
C E
D D
E A
F F
G B
H
I
Я хочу отсортировать два столбца так, чтобы одинаковые значения были выровнены по одинаковым строкам в двух столбцах, например:
Col1 Col2
A A
B B
C C
D D
E E
F F
G
H
I I
K
До сих пор я попробовал следующее VBA
код:
Sub HighlightDups()
Dim i, LastRowA, LastRowB
LastRowA = Range("A" & Rows.Count).End(xlUp).Row
LastRowB = Range("B" & Rows.Count).End(xlUp).Row
Columns("A:A").Interior.ColorIndex = xlNone
Columns("B:B").Interior.ColorIndex = xlNone
For i = 1 To LastRowA
If Application.CountIf(Range("B:B"), Cells(i, "A")) > 0 Then
Cells(i, "A").Interior.ColorIndex = 36
End If
Next
For i = 1 To LastRowB
If Application.CountIf(Range("A:A"), Cells(i, "B")) > 0 Then
Cells(i, "B").Interior.ColorIndex = 36
End If
Next
End Sub
Но этот код просто помогает найти дубликаты и не помещает дубликаты в одинаковые строки в двух столбцах.
Интересно, вы, ребята, можете немного помочь?
Большое спасибо.
2 ответа
Решение
без VBA
- вставить пустой столбец в столбец B
- в б1 поставь
=IF(ISNA(MATCH(A1,C:C,0)),"",INDEX(C:C,MATCH(A1,C:C,0)))
и скопировать вниз - скопировать и вставить обратно столбец B над собой в качестве значений для удаления формул
В VBA
Sub Macro1()
Dim rng1 As Range
Set rng1 = Range([a1], Cells(Rows.Count, "A").End(xlUp))
rng1.Offset(0, 1).Columns.Insert
With rng1.Offset(0, 1)
.FormulaR1C1 = _
"=IF(ISNA(MATCH(RC[-1],C[1],0)),"""",INDEX(C[1],MATCH(RC[-1],C[1],0)))"
.Value = .Value
End With
End Sub
Без VBA
- в C1 положить =VLOOKUP(A:A,B:B,1)
- если у вас есть несколько столбцов, в E1 укажите =VLOOKUP(A:A,B:D,2) .... последняя цифра должна измениться на 1(столбец B), 2(столбец C) 3(столбец D) соответственно.
Вам придется скопировать и вставить это для каждого массива, который вы ищете в отдельных столбцах соответственно, но вы должны быть в состоянии легко скопировать и вставить столбец
Надеюсь это поможет. пожалуйста, дай мне знать, если возникнут какие-либо вопросы