Excel - valores dinâmicos em uma célula (como valor separado por vírgulas)

10

Valores pivô do Excel em uma célula (como valor separado por vírgula)

Eu tenho duas colunas de dados:

Supplier1|Product1
Supplier1|Product2
Supplier1|Product4
Supplier1|Product7
Supplier2|Product3
Supplier2|Product5

Eu quero "girar" em torno do Fornecedor e fornecer a lista de produtos em uma única célula, por exemplo, separados por vírgula.

Supplier1|Product1,Product2,Product4,Product7
Supplier2|Product3,Product5

Existem cerca de 1000 fornecedores e 0 < produtos < = 10.

Minha solução atual envolve o uso de tabelas dinâmicas, salvamento como CSV, etc. e é muito confuso. Uma solução não VBA seria incrível.

    
por Chris 23.02.2011 / 17:23

3 respostas

18

Aqui está uma solução de tabela não dinâmica, não VBA, que usa apenas algumas fórmulas.

  1. Primeiro, usei o "Text-to-columns" para dividir seus dados no delimitador "pipe" (a linha vertical) em 2 colunas; uma coluna "Fornecedor" e uma coluna "Produto". Aqueles vão nas colunas A e B, respectivamente. (Parece em seu post que eles são combinados em uma coluna, então eu os divido primeiro. Você não terá que fazer isso.)

  2. Na coluna C, que eu nomeei como a coluna "Concatenation", usei essa fórmula, começando na célula C2 e copiando todo o caminho: = IF (A2 = A1, C1 & "," & B2, A2 & "|" & B2)

  3. Na coluna D, que eu nomeei como "SupplierChangesAtNextLine?" Eu usei essa fórmula (começando em D2 e copiando todo o caminho): = IF (A2 = A3, "", "Alterado")

  4. Agora você deve conseguir filtrar na coluna D apenas os valores "alterados".

Boa caçada!

    
por 24.02.2011 / 15:16
1
C1  C2  C3          C4
a   1   1   
a   2   2,1 
a   3   3,2,1   
a   5   5,3,2,1 
a   3   3,5,3,2,1   New
b   11  11  
b   13  13,11   
b   11  11,13,11    
b   14  14,11,13,11 New
c   22  22  
c   24  24,22       New
f   25  25  
f   11  11,25   
f   10  10,11,25    New
  1. Em col3 (significa C3) use formula = IF (A2 = A1, B2 & "," & C1, B2) iniciando a célula C2 em diante e arraste-a para baixo.
  2. em C4 (significa column4) use formula = IF (A2 = A3, "", "changed") iniciando a célula D2 em diante e arraste-a para baixo.
  3. Filtre em Novo no C4 (significa col4) e você terá o resultado desejado.
por 12.09.2015 / 11:55
0

Adicione a coluna C como contador *: = COUNTIF (A $ 2: A $ 528, A2)
Adicionar D como incremento * = IF (A2 = A1, D1 + 1, 1)
Adicionar E para concatenar *: = IF (A1 = A2, E1 & "," & B2, B2)
Adicione F para manter apenas a última concat : = IF (E (C2 = D2, E4 < > ""), E4, "")
Nota
adicione na célula 2 e puxe para baixo (ou clique duas vezes no canto direito) para aplicar a fórmula para todas as células na coluna

copie e cole como valores em outra planilha, classifique como decrescente por F, exclua o resto

    
por 10.11.2014 / 08:49