Volendo esagerare, si potrebbero passare come parametri diversi dati: Elenco, Tabella, HEaders.
L'importante è che i dati di origine siano in due colonne adiacenti.
Con pochissime modifiche:
Public Sub Incolonna3(ByRef Elenco As Range, ByRef Tabella As Range, Headers As Variant)
Dim lRiga As LongPtr, rTabella As LongPtr, I As LongPtr, Last As LongPtr
Dim nHeaders As Long, pHeader As Long
'==
nHeaders = UBound(Headers) + 1 'il n° delle intestazioni
For I = 1 To nHeaders 'scrivo le intestazioni
Tabella(1, I) = Headers(I - 1)
Next I
rTabella = 1 'posizione di riga all'interno della tabella
lRiga = 1 'posizione di riga all'interno dell'elenco
Last = Cells(Rows.Count, 1).End(xlUp).Row 'ultima riga dell'elenco
Do While lRiga < Last 'se non siamo a fine elenco
lRiga = lRiga + 1 'vediamo la riga successiva
If Elenco(lRiga, 1) = Headers(0) Then 'se trovo la stringa "Nome"
rTabella = rTabella + 1 'avanzo di una riga nella tabella
Tabella(rTabella, 1) = Elenco(lRiga, 2) 'scrivo il dato corrispondente
Else
pHeader = HPos(Headers, Elenco(lRiga, 1)) 'cerco la colonna della tabella
If pHeader > 0 Then 'se pHeader=-1 la cella è vuota, il caso pHeader=1(trattato precedentemente) può essere ignorato
Tabella(rTabella, pHeader + 1) = Elenco(lRiga, 2) 'scrivo il dato in tabella
End If
End If
Loop
End Sub
Si presume che il primo indice di Headers sia zero.
SP: non testata.
[Modificato da Zer0kelvin 08/12/2016 12:15]
__________________________
[Excel 2010]
-Condividere la conoscenza aumenta la ricchezza di tutti.
-Dai ad un uomo un pesce e lo avrai sfamato per un giorno; insegnagli a pescare e lo avrai sfamato per sempre. (Confucio)
-Il sonno della ragione genera mostri. (Francisco Goya)