Allineare le colonne copiate in base a dati simili

Sto costruendo una storia di 5 anni in cui duplico due colonne di dati da 5 fogli di lavoro diversi. Le intestazioni della colonna sono Agenzia e Importo anno fatturato xx. Ogni anno non ha la stessa quantità di dati; per esempio, se costruisco il primo anno e poi aggiungo un altro anno non ci possono essere alcune agenzie nel primo anno o in alcune agenzie nel primo anno, ma non nel secondo anno e così via mentre continuo ad aggiungere tutti i 5 anni. Ho modificato manualmente each colonna per allineare il nome dell'agenzia ed è stato un task estenuante. Ho cercato di trovare codice che avrebbe automatizzato il process, ma tutto quello che ho trovato è stato quello di confrontare due colonne. Voglio iniziare con due colonne, aggiungere due colonne, aggiungere altre due colonne, e così via, quindi eseguire il codice per raggruppare i dati in base al nome dell'agenzia con il corrispondente importo fatturato Anno xx.

Spero di essere chiaro nella mia richiesta. Apprezzo qualsiasi codice che posso modificare per realizzare questo task.

Aggiungete una colonna in each foglio di lavoro, chiamandolo Anno. Compila questo con l'anno e poi inserisci i 5 fogli di lavoro nello stesso foglio, incollando i dati di ciascun foglio di lavoro sotto il preemaio. Poi fai fuori un semplice tavolo pivot.

Grazie per il suggerimento. Ho usato il codice invece e funziona ottimamente. Ecco il codice:

Sub test() Dim a, i As Long, ii As Long, txt As String, w, x With Cells(1).CurrentRegion.Offset(1) a = .Value: .Borders.LineStyle = xlNone With CreateObject("System.Collections.SortedList") For i = 1 To UBound(a, 1) For ii = 1 To UBound(a, 2) Step 2 If a(i, ii) <> "" Then txt = LCase(a(i, ii)) If Not .Contains(txt) Then ReDim w(1 To UBound(a, 2)) .Item(txt) = w Else w = .Item(txt) End If w(ii) = a(i, ii): w(ii + 1) = a(i, ii + 1) .Item(txt) = w End If Next Next Set x = .Clone End With For i = 0 To x.Count - 1 .Cells(i + 1, 1).Resize(, .Columns.Count).Value = x.GetByIndex(i) Next End With With Cells(1).CurrentRegion For i = 2 To .Columns.Count Step 2 .Columns(i).Borders(10).Weight = 2 Next End With 

End Sub