У моего друга есть два столбца, один из которых содержит уникальные значения, а другой столбец содержит те же значения, но дублированные, как показано ниже.
Column 1 Column 2
ABC123 ABC123
CDE456 ABC123
EFG789 ABC123
ABC123
CDE456
CDE456
CDE456
EFG789
Иногда столбец 2 не всегда содержит все значения, и в этом случае, я думаю, просто нужно четко указать, что их нет в столбце 2. Он хочет, чтобы значения в столбце 1 сместились на номер строки с тем же значением в столбце с повторяющимися значениями, как показано ниже.
Column 1 Column 2
ABC123 ABC123
ABC123
ABC123
ABC123
CDE456 CDE456
CDE456
CDE456
EFG789 EFG789
Есть ли способ сделать это в Excel безболезненно с помощью макроса или внутренней функции Excel?
решение1
Это соответствует вашим вопросам.
Sub ShowStartingPoints()
Dim rowA As Integer
rowA = 1
Do While (Range("A" & rowA).Value <> "")
Dim row As Integer
row = 1
Dim doesValueExitInB As Boolean
doesValueExitInB = False
Dim valueA As String
valueA = Range("A" & rowA).Value
Do While (Range("B" & row).Value <> "")
If (valueA = Range("B" & row).Value) Then
Range("A" & rowA).Value = ""
Range("A" & row).Value = valueA
doesValueExitInB = True
Exit Do
End If
row = row + 1
Loop 'Loops B col
If Not doesValueExitInB Then
Range("C" & rowA) = Range("A" & rowA)
Range("A" & rowA) = ""
Range("C" & rowA).Interior.ColorIndex = 3
End If
rowA = rowA + 1
Loop ' loops A col
End Sub
Перед макросом
После макроса
С этим будут проблемы, которые ваш пример не уловит. Если у вас длинный список в столбце A, как я показал, вы перезапишете данные, потому что одно значение заменяет другое!
Обратите внимание, на первом снимке экрана A5 имеет значение No. Это также то место, где CDE456 начинается в B5. Итак, мы проверяем, где начинается значение A3 в col B. CDE456 в ColB начинается в строке 5, поэтому оно перемещается в A5 (согласно вашему запросу в вашем вопросе)... Бац, мы только что записали поверх значения. Однако в вашем вопросе об этом не упоминается, поэтому я предполагаю, что это не проблема (плюс, вы всегда можете просто адаптировать код под свои нужды).