Как сместить уникальные значения вниз по столбцу к такому же значению в другом столбце?

Как сместить уникальные значения вниз по столбцу к такому же значению в другом столбце?

У моего друга есть два столбца, один из которых содержит уникальные значения, а другой столбец содержит те же значения, но дублированные, как показано ниже.

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 (согласно вашему запросу в вашем вопросе)... Бац, мы только что записали поверх значения. Однако в вашем вопросе об этом не упоминается, поэтому я предполагаю, что это не проблема (плюс, вы всегда можете просто адаптировать код под свои нужды).

Связанный контент