Excel - valores dinâmicos em uma célula (como valor separado por vírgula)
Eu tenho duas colunas de dados:
Fornecedor1 | Produto1 Fornecedor1 | Produto2 Fornecedor1 | Produto4 Fornecedor1 | Produto7 Fornecedor2 | Produto3 Fornecedor2 | Produto5
Desejo 'girar' em torno do Fornecedor e fornecer a lista de produtos em uma única célula, separados por vírgula, por exemplo
Fornecedor1 | Produto1, Produto2, Produto4, Produto7 Fornecedor2 | Produto3, Produto5
Existem cerca de 1000 fornecedores e 0 <produtos <= 10.
Minha solução atual envolve o uso de tabelas dinâmicas, salvando como CSV etc. e é muito confuso. Uma solução não-VBA seria incrível.
microsoft-excel
Chris
fonte
fonte
Respostas:
Aqui está uma solução de tabela não dinâmica e sem VBA que usa apenas algumas fórmulas.
Primeiro, usei o "Texto para colunas" para dividir seus dados naquele delimitador "pipe" (a linha vertical) em 2 colunas; uma coluna "Fornecedor" e uma coluna "Produto". Aqueles vão nas colunas A e B, respectivamente. (Aparece na sua postagem que eles são combinados em uma coluna, então eu os divido primeiro. Você não precisará fazer isso.)
Na coluna C, que chamei de coluna "Concatenação", usei essa fórmula, iniciando na célula C2 e copiando todo o caminho: = IF (A2 = A1, C1 & "," & B2, A2 & "|" & B2)
Na coluna D, que eu nomeei como "SupplierChangesAtNextLine?" Usei esta fórmula (começando em D2 e copiando até o fim): = IF (A2 = A3, "", "Changed")
Agora você deve conseguir filtrar na coluna D apenas os valores "alterados".
Boa caçada!
fonte
fonte
Adicione a coluna C como contador *: = COUNTIF (A $ 2: A $ 528, A2)
Adicione D como incremento * = IF (A2 = A1, D1 + 1, 1)
Adicione E para concatenar *: = IF (A1 = A2, E1 & "," & B2, B2)
Adicione F para manter apenas a última concat : = SE (AND (C2 = D2, E4 <> ""), E4, "")
Observe a célula 2 e puxe para baixo (ou clique duas vezes) no canto direito) para aplicar a fórmula a todas as células da coluna
copie e cole como valores em outra planilha, classifique decrescente por F, exclua o restante
fonte