Como consolidar várias linhas em uma coluna

0

Aqui está a minha situação. Eu preciso ter uma lista de 38k contas de clientes e classificar as informações para um modelo específico que eu possa importar para o nosso novo site. No entanto, a forma como os dados são apresentados torna isso difícil ...

Cada endereço salvo para 1 cliente é uma linha separada. Então, se você tiver um endereço de faturamento ou de envio diferente, seria duas linhas. Às vezes 3 linhas. Eu preciso mover essas linhas em uma coluna (endereço 1, endereço 2, etc.) em 1 linha. Portanto, se o CustomerA tiver 3 endereços salvos, preciso levar essas 3 linhas e movê-las para 3 colunas de 1 linha. Espero que isso faça sentido.

Eu não tenho idéia se uma fórmula, tabela dinâmica ou VBA (eu sei tanto quanto Jon Snow nessa área) seria o melhor caminho a seguir. Eu tentei tabelas dinâmicas, mas não está realmente funcionando. Eu estava pensando que o Index / Match poderia ser a melhor solução - eu teria que duplicar a fórmula para cada coluna de endereço, mas isso funcionaria. No entanto, não sei como posso acomodar as várias linhas.

Abaixo está um exemplo dos dados que recebi. A linha 20 é o modelo para o qual preciso mover as linhas. A coluna g_user id é exclusiva por cliente, mas com várias linhas de endereços para um único cliente esse valor será duplicado na planilha. Mesmo com customer_no.

link

Por favor, deixe-me saber se você precisar de mais informações e tentarei explicar melhor.

EDIT - Da planilha que postei, preciso pegar as linhas 2 e 3 e mover as informações de endereço para novas colunas na linha 1. Então, como o endereço é 2 colunas, a cidade é 1, o estado é 1, o CEP é 1 , e country is 1 faz 12 colunas no total de dados dessas 2 linhas.

    
por Bschacht 24.08.2017 / 21:09

4 respostas

0

Obrigado a todos pela ajuda e sugestões, mas resolvi isso usando outro método.

Eu concatenei simplesmente um '-1', '- 2', '- 3' nos IDs de cliente "exclusivos". Então eu fiz um VLOOKUP para os valores unique-1, -2, -3 para cada nova coluna que eu precisava adicionar.

Esperamos que todo esse tempo e trabalho valham a pena pela reputação obtida com essa provação.

    
por 25.08.2017 / 21:38
0
  1. Selecione uma célula em branco para colocar o conteúdo combinado, insira formula = CONCATENATE (TRANSPOSE (B2: B19)) na Barra de Fórmulas, em seguida, você precisará selecionar TRANSPOSE (B2: B19) parte da fórmula e, em seguida, pressione F9 chave. Você pode ver que a fórmula foi alterada conforme mostrado nas capturas de tela abaixo.

  • Remova as chaves da fórmula na barra de fórmulas e, em seguida, pressione a tecla Enter.
  • por 24.08.2017 / 22:38
    0

    Eu gosto de usar o VBA para uma tarefa como essa. Supondo que você tenha um ID de usuário único, conforme mostrado em sua tabela de exemplo, você poderia fazer algo assim:

    Sub Addresses_To_Columns()
    
        Dim lastRow As Long
        Dim addressCount As Integer: addressCount = 0
    
        lastRow = Range("A" & Rows.Count).End(xlUp).Row
    
        For i = lastRow To 3 Step -1
            If Cells(i, 1).Value = Cells(i - 1, 1).Value Then
                addressCount = addressCount + 1
                Range(Cells(i - 1, 10), Cells(i - 1, (addressCount * 6) + 10)) = Range(Cells(i, 4), Cells(i, (addressCount * 6) + 4)).Value
                Rows(i).Delete
            Else
                addressCount = 0
            End If
        Next i
    
    End Sub
    

    Isso vai virar isso:

    paraisso:

    Esse código precisará ser personalizado para se adequar ao seu formato específico. Observe também que isso foi feito rapidamente como uma prova de conceito e pode estar faltando algumas práticas recomendadas comuns. Por favor, faça backup de seus dados antes de tentar este código, pois ele contém um comando delete para se livrar de linhas duplicadas.

        
    por 25.08.2017 / 06:24
    0

    Solução muito simples, se entendi corretamente sua consulta. Certifique-se de fazer o backup da planilha, obviamente.

    1) Adicione o número necessário de novas colunas no local correto. Vamos dizer que a nova coluna é N.

    2) Estou supondo que o ID do cliente esteja na Coluna A e que as linhas com um novo endereço para o mesmo cliente tenham o mesmo número na Coluna A nessa linha. E, finalmente, assumindo que a primeira linha para cada cliente tem os detalhes mais completos, além do endereço, ou seja, o nome do telefone, etc (se não, em seguida, use classificação, classificando primeiro pelo número do cliente e depois pelo nome).

    3) Na célula N2, digite esta fórmula:

    =if(and(a3=a2,a1<>a2),h3,"")
    

    onde H é a coluna com os endereços. Se a próxima linha tiver o mesmo cliente não. (a3 = a2) E esta linha é um novo cliente, ou seja, um número de cliente diferente da linha anterior (a1 < > a2), ENTÃO, o endereço da próxima linha será colocado na linha principal desse cliente. Repita para todas as outras partes desse endereço para que todas as informações sejam movidas. Ou seja, mesma fórmula, mas em O2 em vez de N2 e fazendo referência a i3 em vez de h3 e assim por diante.

    4) Faça uma fórmula semelhante para o terceiro endereço. Ou seja, assumindo que a coluna X é a nova coluna para o terceiro endereço, no tipo X2:

    =if(and(a4=a2,a1<>a2),h4,"")
    

    Basicamente o mesmo, apenas retirando as informações de duas linhas.

    5) Até agora todos os endereços devem estar na linha "principal" para cada cliente. Agora você precisa copiar todos esses endereços e colá-los nos mesmos locais, usando Colar valores especiais. Isso eliminará as fórmulas e terá os endereços como dados, como se você tivesse digitado.

    6) Agora, use classificar por nome do cliente para obter todas as linhas que tenham espaço em branco para o nome (porque são apenas endereços extras) em um único local. Em seguida, exclua todas as linhas, depois de garantir que todos os dados necessários estejam agora na linha correta. Voila

        
    por 27.08.2017 / 16:28