Come trasporre le celle di una colonna in base ai valori univoci presenti in un’altra colonna?
Supponiamo che tu abbia un intervallo di dati con due colonne e che ora voglia trasporre i valori di una colonna in righe orizzontali, raggruppandoli in base ai valori univoci presenti nell’altra colonna, per ottenere il risultato mostrato. Hai qualche buona idea su come risolvere questo problema in Excel?

Trasponi celle in una colonna in base ai valori univoci con formule
Trasponi celle in una colonna in base ai valori univoci con codice VBA
Trasponi celle in una colonna in base ai valori univoci con Kutools per Excel
Trasponi celle in una colonna in base ai valori univoci con formule
Con le seguenti formule matriciali puoi estrarre i valori univoci e trasporre i dati corrispondenti in righe orizzontali. Ecco come procedere:
1. Inserisci questa formula matriciale: =INDICE($A$2:$A$16; CONFRONTA(0; CONTA.SE($D$1:$D1; $A$2:$A$16); 0)) in una cella vuota, ad esempio D2, e premi contemporaneamente i tasti Maiusc + Ctrl + Invio per ottenere il risultato corretto. Vedi screenshot:

Nota: Nella formula sopra, A2:A16 è la colonna da cui desideri estrarre i valori univoci e D1 è la cella posizionata immediatamente sopra quella contenente la formula.
2. Trascina quindi il quadratino di riempimento verso il basso nelle celle sottostanti per estrarre tutti i valori univoci. Vedi screenshot:

3. Inserisci quindi questa formula nella cella E2:=IFERROR(INDEX($B$2:$B$16, MATCH(0, COUNTIF($D2:D2,$B$2:$B$16)+IF($A$2:$A$16<>$D2, 1, 0), 0)), 0) e ricorda di premere contemporaneamente i tasti Maiusc + Ctrl + Invio per ottenere il risultato. Vedi screenshot:

Nota: Nella formula sopra, B2:B16 è la colonna contenente i dati da trasporre, A2:A16 è la colonna in base alla quale desideri effettuare la trasposizione e D2 contiene il valore univoco estratto al Passo 1.
4.Trascina quindi il quadratino di riempimento verso destra nelle celle in cui desideri visualizzare i dati trasposti, fino a quando non compare 0, vedi screenshot:

5. Trascina quindi il quadratino di riempimento verso il basso nell'intervallo di celle per ottenere i dati trasposti, come mostrato nello screenshot seguente:

Trasponi celle in una colonna in base ai valori univoci con codice VBA
Le formule potrebbero sembrarti complesse da comprendere. In alternativa, puoi eseguire il seguente codice VBA per ottenere subito il risultato desiderato.
1. Tieni premuti i tasti ALT + F11 per aprire la finestra di Microsoft Visual Basic, Applications.
2. Fai clic su Inserisci > Modulo, quindi incolla il codice seguente nella finestra del Modulo.
Codice VBA: Trasponi celle in una colonna in base ai valori univoci in un'altra colonna:
Sub transposeunique()
'updateby Extendoffice
Dim xLRow As Long
Dim i As Long
Dim xCrit As String
Dim xCol As New Collection
Dim xRg As Range
Dim xOutRg As Range
Dim xTxt As String
Dim xCount As Long
Dim xVRg As Range
On Error Resume Next
xTxt = ActiveWindow.RangeSelection.Address
Set xRg = Application.InputBox("please select data range(only two columns):", "Kutools for Excel", xTxt, , , , , 8)
Set xRg = Application.Intersect(xRg, xRg.Worksheet.UsedRange)
If xRg Is Nothing Then Exit Sub
If (xRg.Columns.Count <> 2) Or _
(xRg.Areas.Count > 1) Then
MsgBox "the used range is only one area with two columns ", , "Kutools for Excel"
Exit Sub
End If
Set xOutRg = Application.InputBox("please select output range(specify one cell):", "Kutools for Excel", xTxt, , , , , 8)
If xOutRg Is Nothing Then Exit Sub
Set xOutRg = xOutRg.Range(1)
xLRow = xRg.Rows.Count
For i = 2 To xLRow
xCol.Add xRg.Cells(i, 1).Value, xRg.Cells(i, 1).Value
Next
Application.ScreenUpdating = False
For i = 1 To xCol.Count
xCrit = xCol.Item(i)
xOutRg.Offset(i, 0) = xCrit
xRg.AutoFilter Field:=1, Criteria1:=xCrit
Set xVRg = xRg.Range("B2:B" & xLRow).SpecialCells(xlCellTypeVisible)
If xVRg.Count > xCount Then xCount = xVRg.Count
xRg.Range("B2:B" & xLRow).SpecialCells(xlCellTypeVisible).Copy
xOutRg.Offset(i, 1).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
Application.CutCopyMode = False
Next
xOutRg = xRg.Cells(1, 1)
xOutRg.Offset(0, 1).Resize(1, xCount) = xRg.Cells(1, 2)
xRg.Rows(1).Copy
xOutRg.Resize(1, xCount + 1).PasteSpecial Paste:=xlPasteFormats
xRg.AutoFilter
Application.ScreenUpdating = True
End Sub 3. Premi quindi il tasto F5 per eseguire il codice. Comparirà una finestra di dialogo che ti chiederà di selezionare l’intervallo dati da utilizzare, vedi screenshot:

4. Fai quindi clic sul pulsante OK. Comparirà un'altra finestra di dialogo che ti chiederà di selezionare una cella in cui inserire il risultato. Vedi screenshot:

6. Fai clic sul pulsante OK e i dati nella colonna B verranno trasposti in base ai valori univoci nella colonna A. Vedi screenshot:

Trasponi celle in una colonna in base ai valori univoci con Kutools per Excel
Se disponi di Kutools per Excel, combinando le funzionalità Unione avanzata righe e Dividi celle, puoi completare rapidamente questa operazione senza dover ricorrere a formule o codice.
Dopo aver installato Kutools per Excel, procedi come segue:
1. Seleziona l’intervallo di dati da utilizzare. (Se desideri conservare i dati originali, copiali e incollali prima in un’altra posizione.)
2. Fai quindi clic su Kutools > Unisci e Dividi > Unione avanzata righe, vedi screenshot:

3. Nella finestra di dialogo Combinare Righe in base alla colonna, esegui le seguenti operazioni:
(1.) Fai clic sul nome della colonna in base alla quale desideri trasporre i dati e seleziona Chiave primaria;
([[PH_36].) Fai clic su un’altra colonna che desideri trasporre, quindi su Combina e scegli un separatore per i dati combinati, ad esempio spazio, virgola o punto e virgola.

4. Fai quindi clic sul pulsante Ok. I dati nella colonna B saranno combinati in un’unica cella in base alla colonna A, come mostrato nello screenshot:

5. Seleziona quindi le celle unite e fai clic su Kutools > Unisci e Dividi > Dividi celle, vedi screenshot:

6. Nella finestra di dialogo Dividi celle, seleziona Dividi in colonne sotto l'opzione Tipo, quindi scegli il separatore utilizzato per combinare i dati. Vedi screenshot:

7. Fai quindi clic sul pulsante Ok e seleziona una cella in cui inserire il risultato suddiviso nella finestra di dialogo visualizzata, vedi screenshot:

8. Fai clic su OK e otterrai il risultato desiderato. Vedi screenshot:

Scarica e prova gratis Kutools per Excel ora!
Demo: Trasponi celle in una colonna in base ai valori univoci con Kutools per Excel
Migliori Strumenti per la Produttività in Office
Potenzia le tue competenze in Excel con Kutools per Excel e sperimenta un’efficienza mai vista prima.Kutools per Excel offre oltre 300 funzionalità avanzate per aumentare la produttività e Risparmia tempo.Clicca qui per ottenere la funzionalità di cui hai più bisogno...
Office Tab Porta l'interfaccia a schede in Office e rende il tuo lavoro molto più semplice
- Abilita la modifica e la lettura a schede in Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
- Apri e crea più documenti in nuove schede all’interno della stessa finestra, invece che in finestre separate.
- Aumenta la tua produttività del 50 % e risparmia centinaia di clic del mouse ogni giorno!
Tutti i componenti aggiuntivi di Kutools in un unico programma di installazione.
Kutools for Office è la suite che include componenti aggiuntivi per Excel, Word, Outlook e PowerPoint, oltre a Office Tab Pro: la soluzione ideale per i team che lavorano su diverse app di Office.
- Suite completa— componenti aggiuntivi per Excel, Word, Outlook e PowerPoint + Office Tab Pro
- Un unico programma di installazione, una sola licenza— configurazione in pochi minuti (pronto per MSI)
- Funziona meglio insieme— produttività ottimizzata tra le app di Office
- Prova gratuita di 30 giorni con tutte le funzionalità— nessuna registrazione, nessuna carta di credito
- Miglior rapporto qualità-prezzo— risparmia rispetto all’acquisto dei singoli componenti aggiuntivi