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

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 ответ1

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 начинается в столбце B. CDE456 в ColB начинается в строке 5, поэтому оно перемещается в A5 (согласно вашему запросу в вашем вопросе)... Кабум, мы только что переписали значение. Тем не менее, ваш вопрос не упоминает об этом, поэтому я предполагаю, что это не проблема (плюс, вы всегда можете просто адаптировать код к вашим потребностям).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .