Classificação do Excel mantendo valores iguais em colunas diferentes na mesma posição

Classificação do Excel mantendo valores iguais em colunas diferentes na mesma posição

Imagine que tenho o seguinte conjunto de dados

A               B
AnthonyMorgan   EvelynThomas
JoePatterson    RussellRobinson
JohnAnderson    ChristopherMiller
CarolynMorris   RyanStewart
DorisKing       SarahPrice
AlanJohnson     MarilynHall
JonathanHall    EricCooper
AndreaPowell    GregorySimmons
PaulaCooper     JackRussell
AndrewPeterson  SeanEvans
JohnWilliams    JudyBell
LillianLewis    JohnWilliams
SteveRoberts    LillianLewis
MatthewGray     SteveRoberts
ChristinaClark  MatthewGray
                PeterAllen
                SharonHill
                MaryTurner
                DorisGonzales
                VictorWhite
                JoanFoster
                ChristinaClark
                RubyBryant
                RogerColeman
                JosephLong
                AndrewPeterson

Gostaria de classificar, imagine por coluna, Apara que os mesmos valores em colunas diferentes sejam mantidos juntos. O resultado final seria:

A                   B
AlanJohnson 
AndreaPowell    
AndrewPeterson      AndrewPeterson
AnthonyMorgan   
CarolynMorris   
ChristinaClark      ChristinaClark
                    ChristopherMiller
                    DorisGonzales
DorisKing   
                    EricCooper
                    EvelynThomas
                    GregorySimmons
                    JackRussell
                    JoanFoster
JoePatterson    
JohnAnderson    
JohnWilliams        JohnWilliams
JonathanHall    
                    JosephLong
                    JudyBell
LillianLewis        LillianLewis
                    MarilynHall
                    MaryTurner
MatthewGray         MatthewGray
PaulaCooper 
                    PeterAllen
                    RogerColeman
                    RubyBryant
                    RussellRobinson
                    RyanStewart
                    SarahPrice
                    SeanEvans
                    SharonHill
SteveRoberts        SteveRoberts
                    VictorWhite

Qualquer ideia?

Responder1

Experimente esta macro:

Sub Interleaver()
    Dim nA As Long, nB As Long
    Dim rc As Long, i As Long, j As Long

    rc = Rows.Count
    nA = Cells(rc, "A").End(xlUp).Row
    nB = Cells(rc, "B").End(xlUp).Row
    Range("A1:A" & nA).Copy Range("C1")
    Range("B1:B" & nB).Copy Range("C" & nA + 1)

    For i = 1 To nA + nB
        If i <= nA Then
            Cells(i, "D") = "A"
        Else
            Cells(i, "D") = "B"
        End If
    Next i

    Range("C1:D" & nA + nB).Sort Key1:=Range("C1"), Order1:=xlAscending, Header:=xlNo, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal

    Range("A1:A" & nA).Clear
    Range("B1:B" & nB).Clear
    j = 2

    If Range("D1").Value = "A" Then
        Cells(1, "A") = Cells(1, "C")
    Else
        Cells(1, "B") = Cells(1, "C")
    End If

    For i = 2 To nA + nB
        If Cells(i, "C") = Cells(i - 1, "C") Then
            j = j - 1
            Range("A" & j & ":B" & j) = Cells(i, "C")
            j = j + 1
        Else
            If Cells(i, "D").Value = "A" Then
                Cells(j, "A") = Cells(i, "C")
            Else
                Cells(j, "B") = Cells(i, "C")
            End If
            j = j + 1
        End If
    Next i
End Sub

Irá produzir:

insira a descrição da imagem aqui

Responder2

Não acho que haja uma maneira simples de fazer isso. Tente isto:
- mescle seus dados em um intervalo lembrando a localização original (por exemplo, copie sua primeira coluna para uma nova planilha e preencha "1" na próxima coluna, copie a segunda coluna abaixo da primeira e preencha "10" na segunda coluna para este conjunto de dados).
- insira uma tabela dinâmica, os rótulos das colunas devem ser sua primeira coluna e solicite a soma da segunda coluna (agora você tem seus valores exclusivos classificados em ordem alfabética, na segunda coluna 1 ou 10 se o nome ocorreu apenas em uma coluna ou 11 se estiver presente em ambas ).
- supondo que seus dados na tabela dinâmica comecem em A5, insira isto em C5: =if(mod(b5,2)=1,a5,"")e este em d5:=if(b5>9,a5,"")

Responder3

Outro fluxo de trabalho seria o seguinte. Observe que ele é executado manualmente, pois não conheço nenhuma função do Excel que faça o que você procura. Outra opção seria usar Macro ou VBA para automatizar o fluxo de trabalho sugerido abaixo.

A imagem 1 mostra dados de exemplo iniciais:

Inicial

Comece classificando cada coluna separadamente. Mantenha essa classificação não afeta a outra coluna. Em seguida, adicione outra coluna para auxiliar no processo e escreva uma função de correspondência de índice para encontrar correspondências para cada entrada da coluna A da coluna B:

=INDEX($C$1:$C$10,MATCH(A2,$C$1:$C$10,0),1)

A imagem 2 mostra os resultados desta etapa:

Indexação

Agora recorte e cole a coluna B para evitar que seja adjacente aos valores NA. Isso está duas células abaixo no exemplo. Depois, recorte e cole a coluna A e a coluna auxiliar para combinar as entradas com a coluna B. Veja a imagem abaixo:

Iterações

Itere esta fase até terminar. Lembre-se de começar com a coluna B e combinar a coluna A com a coluna INDEX (coluna auxiliar). Por fim, remova a coluna INDEX e pronto.

Quase pronto

FEITO!

Responder4

O que você realmente está pedindo é uma junção externa completa, tratando as duas colunas como tabelas separadas.

Pelo que sei, isso não é possível no Excel nativo, mesmo com a ajuda do plugin Power Query.

Vocêpodealcançar os resultadosSEa tabela mais longa abrange todas as entradas da tabela mais curta, mas seu exemplo mostra que não é esse o caso.

O que você pode fazer é anexar as duas colunas e depois desduplicar, o que é bastante fácil. Você também pode adicionar uma coluna de contagem para ver quantas cópias do mesmo nome existiam nos dados originais. Deixe-me saber se você quiser fazer isso.

ATUALIZAÇÃO: Como eu esperava, você pode fazer isso com o Microsoft Access. Para fazer isso, primeiro você precisa ter as duas colunas como tabelas separadas. Você então deve criar DUAS junções entre as tabelas, uma junção externa esquerda e uma junção externa direita. Depois de criar esses relacionamentos, você poderá fazer uma consulta simples para selecionar uma única coluna de cada tabela. É isso.

Você pode deixar seus dados originais no Excel se desejar e simplesmente vinculá-los, desde que divida as duas colunas em tabelas separadas.

informação relacionada