Como deslocar valores exclusivos em uma coluna para o mesmo valor em outra coluna?

0

Meu amigo tem duas colunas em que uma possui valores únicos e outra coluna possui os mesmos valores, mas também é duplicada, como mostrado abaixo

Column 1    Column 2
ABC123      ABC123
CDE456      ABC123
EFG789      ABC123
            ABC123
            CDE456
            CDE456
            CDE456
            EFG789

Às vezes, a coluna 2 nem sempre tem todos os valores, caso em que eu acho que é necessário deixar claro que eles não existem na coluna 2. O que ele quer é que ele queira que os valores da coluna 1 sejam alterados para o número da linha do mesmo valor na coluna de valores duplicados, como mostrado abaixo.

Column 1    Column 2
ABC123      ABC123
            ABC123
            ABC123
            ABC123
CDE456      CDE456
            CDE456
            CDE456
EFG789      EFG789

Existe uma maneira de fazer isso no Excel sem problemas, seja com uma macro ou com um recurso interno do Excel?

    
por aug 18.07.2014 / 23:55

1 resposta

1

Isso faz o que suas perguntas exigem.

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

Antes da macro

Depoisdamacro

Haverá problemas com isso, o que seu exemplo não selecionará. Se você tem uma longa lista na coluna A, como eu mostrei, você irá sobrescrever dados porque um valor substitui outro valor!

Note que na primeira captura de tela, A5 tem o valor No. Este também é o local onde o CDE456 começa em B5. Então, nós checamos onde o valor de A3 começa no col B. CDE456 no ColB começa na linha 5 então ele é movido para A5 (conforme sua requisição na sua pergunta) ... Kaboom, nós acabamos de escrever sobre um valor. No entanto, sua pergunta não menciona isso, então vou assumir que não é um problema (além disso, você sempre pode adaptar o código às suas necessidades).

    
por 21.07.2014 / 09:54