Excel: valori pivot in una cella (come valore separato da virgola)


11

Excel: valori pivot in una cella (come valore separato da virgola)

Ho due colonne di dati:

Supplier1 | Product1
Supplier1 | Product2
Supplier1 | Prodotto4
Supplier1 | Prodotto7
Supplier2 | Product3
Supplier2 | Prodotto5

Voglio "ruotare" attorno al fornitore e fornire l'elenco dei prodotti in una singola cella, ad es. Separati da virgola

Supplier1 | Product1, Product2, Prodotto4, Prodotto7
Supplier2 | Product3, Prodotto5

Ci sono circa 1000 fornitori e 0 <prodotti <= 10.

La mia attuale soluzione alternativa prevede l'utilizzo di tabelle pivot, il salvataggio come CSV ecc. Ed è molto disordinato. Una soluzione non VBA sarebbe sorprendente.


È necessaria una query SQL per farlo facilmente. Puoi esportare in un database con qualche descrizione?
Rhys Gibson,

Risposte:


23

Ecco una soluzione di tabella non VBA, non pivot che utilizza solo un paio di formule.

  1. In primo luogo, ho usato il "Testo su colonne" per dividere i dati in quel delimitatore "pipe" (la linea verticale) in 2 colonne; una colonna "Fornitore" e una colonna "Prodotto". Questi vanno rispettivamente nelle colonne A e B. (Sembra che nel tuo post siano combinati in una colonna, quindi li ho prima divisi. Non dovrai farlo.)

  2. Nella colonna C, che ho chiamato colonna "Concatenazione", ho usato questa formula, iniziando dalla cella C2 e copiando fino in fondo: = IF (A2 = A1, C1 & "," & B2, A2 & "|" & B2)

  3. Nella colonna D, che ho chiamato "SupplierChangesAtNextLine?" Ho usato questa formula (a partire da D2 e ​​copiando fino in fondo): = IF (A2 = A3, "", "Changed")

  4. Ora dovresti essere in grado di filtrare sulla colonna D solo per i valori "modificati".

Buona caccia!


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. In col3 (significa C3) usa formula = IF (A2 = A1, B2 & "," & C1, B2) a partire dalla cella C2 in avanti e trascinala verso il basso.
  2. in C4 (significa colonna4) usa formula = IF (A2 = A3, "", "cambiato") a partire dalla cella D2 in avanti e trascinala verso il basso.
  3. Filtra su Nuovo su C4 (significa col4) e otterrai il risultato desiderato.

0

Aggiungi colonna C come contatore *: = COUNTIF (A $ 2: A $ 528, A2)
Aggiungi D come incremento * = IF (A2 = A1, D1 + 1, 1)
Aggiungi E per concatenare *: = IF (A1 = A2, E1 & "," & B2, B2)
Aggiungi F per mantenere solo l'ultimo concat : = IF (AND (C2 = D2, E4 <> ""), E4, "")
Nota
aggiungi sulla cella 2 e trascina verso il basso (o fai doppio clic nell'angolo destro) per applicare la formula per tutte le celle nella colonna

copia e incolla come valori in un altro foglio, ordina in ordine decrescente per F, elimina il resto


troppo da fare ... La soluzione di F106dart è più elegante.
ihightower,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.