Se sai fare la scansione riga per riga sei già a buon punto, serve poco di più, per esempio una cosa del genere:
codice:
Private Sub CommandButton1_Click()
regione = InputBox("Indica la regione da estrarre")
riga = 1
colonna = 5
For Each casella In Range([A1], [A1].End(xlDown))
If casella = regione Then
Cells(riga, colonna) = casella.Offset(0, 2)
riga = riga + 1
End If
Next
End Sub
Non avendo dato informazioni su come fornire l'input e dove ottenere l'output e su come comportarsi con le maiuscole o con gli input errati ho fatto un po' di testa mia.
L'input ti viene richiesto via inputbox ma si potrebbe anche scrivere in una casella o fornirlo via file o quello che vuoi, idem per l'output che faccio scrivere a partire dalla riga/colonna indicate e proseguendo a scendere.
Il range di esplorazione va dalla cella A1 fino alla prima casella vuota.
Le maiuscole non sono gestite quindi Piemonte è diverso da piemonte.
Se una regione non viene trovata non viene data nessuna segnalazione, semplicemente non viene estratto nulla.
Come vedi il puntamento alla cella da estrarre viene fatto con un offset, cioè spostandosi di 0 righe e 2 colonne rispotto alla cella in esame, in modo che da id_regione si passi a nome_provincia, mentre il puntamento alla cella in cui scrivere è fatto con un normale puntamento riga/colonna.
Vedi un po' se come base può andar bene e poi magari lo perfezioniamo.