Raggruppare le etichette e concatenare i loro valori di testo (come una tabella pivot)


22

Ho un foglio di calcolo con dati come questo:

Prodotto | Attributo
---------- ---------- +
Prodotto A | Ciano
Prodotto B | Ciano
Prodotto C | Ciano
Prodotto A | Magenta
Prodotto C | Magenta
Prodotto B | Giallo
Prodotto C | Giallo
Prodotto A | Nero
Prodotto B | Nero

Cosa mi piacerebbe fare raggruppare tutto per colonna A e fare in modo che la colonna B sia un elenco delimitato da virgole di valori che condividono la colonna A in comune, in questo modo:

Prodotto | Attributo
---------- + --------------------------
Prodotto A | Ciano, Magenta, Nero
Prodotto B | Ciano, Giallo, Nero
Prodotto C | Ciano, Magenta, Giallo, Nero

Sfortunatamente, le Tabelle Pivot sanno solo come lavorare con i valori numerici e il più lontano a questo va contando il numero di volte che si verifica la Colonna A.

Sono stato in grado di farlo alla fine importando i dati in un database MySQL e usando la GROUP_CONCAT(Attribute)funzione di MySQL in una query con una GROUP BY Productclausola, ma dopo aver sbattuto la testa sulla mia scrivania ripetutamente mentre tentavo di trovare una soluzione Excel.

Per riferimento futuro, è possibile in Excel senza macro? Che lo sia o no, come si potrebbe fare?

Risposte:


31
   |     A     |     B
---+-----------+-----------
 1 |  PRODUCT  | ATTRIBUTE
 2 | Product A | Cyan
 3 | Product B | Cyan
 4 | Product C | Cyan
 5 | Product A | Magenta
 6 | Product C | Magenta
 7 | Product B | Yellow
 8 | Product C | Yellow
 9 | Product A | Black
10 | Product B | Black

Supponendo che la riga 1: 1 sia la riga di intestazione.

  1. Ordina per colonna A per raggruppare per prodotto

  2. Preparare i dati in formato separato da virgole nella colonna C immettendo in C2 la seguente formula e copiandoli in C3: C10.

    =IF(A2<>A1, B2, C1 & "," & B2)
    
  3. Identifica le righe utili inserendo in D2 =A2<>A3e copiandolo in D3: D10.

  4. Copia la colonna C: D, quindi incolla speciale come valore ( AltE- S- V- Enter). Ora otterrai:

    Product A    Cyan       Cyan                   FALSE
    Product A    Magenta    Cyan,Magenta           FALSE
    Product A    Black      Cyan,Magenta,Black     TRUE
    Product B    Cyan       Cyan                   FALSE
    Product B    Yellow     Cyan,Yellow            FALSE
    Product B    Black      Cyan,Yellow,Black      TRUE
    Product C    Cyan       Cyan                   FALSE
    Product C    Magenta    Cyan,Magenta           FALSE
    Product C    Yellow     Cyan,Magenta,Yellow    TRUE
    
  5. Rimuovere le righe inutili filtrando FALSEnella colonna D con Filtro automatico, quindi eliminare quelle righe.

  6. Fine . La colonna A e C è ciò di cui hai bisogno.


1
Questo sta usando la tua immaginazione! Congratulazioni!
jorgebg,

Mentre funziona, i tempi sono cambiati dal 2012. Cerca di seguito una nuova risposta che utilizza il componente aggiuntivo PowerQuery (integrato in Excel 2016). Non potrebbe essere più facile. Bene, forse parlando al computer e chiedendogli di "raggruppare i miei dati!" Forse tra altri 6 anni.
ripvlan,

11

So che è un vecchio post, ma ho avuto questa sfida oggi. Ho usato il componente aggiuntivo PowerQuery di Microsoft (NOTA: è integrato in Excel 2016 per impostazione predefinita).

  1. Seleziona il tuo tavolo
  2. Nella scheda POWER QUERY (o DATA nel 2016), seleziona "Dalla tabella"
  3. Fai clic sulla colonna "Prodotto"
  4. nella scheda Trasforma, seleziona "Raggruppa per"
  5. Nella scheda Visualizza, assicurati che "Barra della formula" sia selezionato
  6. Cambia la formula

    A PARTIRE DAL:

    = Table.Group(#"Changed Type", {"Product"}, {{"Count", each Table.RowCount(_), type number}})
    

    PER:

    = Table.Group(#"Changed Type", {"Product"}, {{"Attributes", each Text.Combine([Attribute], ", "), type text}})
    

    Fai clic qui per la foto che mostra i passaggi dall'alto

Il passaggio 6 sta sfruttando le formule di Power Query (M) per eseguire manipolazioni di dati non esposte attraverso le operazioni di base fornite nell'interfaccia utente. Microsoft ha un riferimento completo disponibile online per tutte le funzioni avanzate disponibili in Power Query.


Soluzione molto elegante, probabilmente la migliore di tutte.
asdmin,

@mattonia, mi chiedo se sai come rimuovere anche i valori duplicati lungo questa linea usando questo trucco davvero fantastico?
Lana B,

Al PASSAGGIO 1 (dopo aver selezionato la tabella) dovresti essere in grado di accedere alla scheda Dati nella barra multifunzione e fare clic su "Rimuovi duplicati".
Matt Poland,

C'è un'altra opzione in Power Query se non si desidera modificare la tabella originale. Dopo PASSAGGIO 2, puoi tenere premuto CTRL e fare clic su entrambe le colonne in modo che siano entrambe selezionate. Quindi fai clic con il pulsante destro del mouse su una delle colonne e seleziona "Rimuovi duplicati". Quindi procedere al PASSO 3.
Matt Poland,

Grazie! Questa è la risposta migliore Per coloro che usano Excel 2016, PowerQuery è integrato. Basta premere la scheda Dati e quindi premere "Da tabella / intervallo" nella sezione "Ottieni e trasforma dati". Si aprirà Power Query Editor, premere la scheda Visualizza e abilitare la barra della formula. Il resto delle istruzioni funziona così com'è.
ripvlan

3

Ecco un paio di approcci, entrambi "non macro" ...

  1. Con un piccolo set di dati, dopo averlo prima ordinato per prodotto (simile a GROUP BY Product), è possibile innanzitutto copiare la colonna "Prodotto", incollarlo altrove, quindi rimuovere i duplicati. Successivamente, copia gli "Attributi" per ciascun prodotto e "incolla speciale, TRASPARENTE" accanto a ciascun Prodotto. Quindi concatena una virgola con ciascuno dei tuoi attributi trasposti in una colonna dei risultati finali. Certo, tutto questo "copia / incolla speciale / trasponi" invecchierebbe rapidamente se si dispone di un lungo elenco di prodotti.

  2. Se hai molti dati, usando alcune formule puoi arrivare al risultato finale, come mostrato di seguito. Le formule in F2, G2, H2, I2 e N2 sono indicate dalle frecce blu. Copia quelli nelle righe sottostanti secondo necessità. Si noti che J2: L2 utilizza la stessa formula di I2. Inoltre, la formula F2 si riferisce a una gamma denominata "Prodotti" che copre la gamma A: A.

inserisci qui la descrizione dell'immagine


Queste sono buone soluzioni, anche se solo se il set di dati è piccolo, come dici tu. Grazie!
p0lar_bear,
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.