Spostare il numero civico nella sua cella (Microsoft Excel)
Tom lavora con molti elenchi di indirizzi. Una cosa che lo fa impazzire è quando l’indirizzo è in una singola cella. Tom ha bisogno del numero civico in una cella e della strada in una cella diversa. Quindi, se l’indirizzo è “1234 Maple Glen Ave.”, allora ha bisogno di “1234” in una cella e “Maple Glen Ave.” in un altro. Può copiare il numero civico in una colonna posta prima del nome della via, ma riscrivere i numeri e poi eliminarli dal nome della via è un processo lungo. Tom si chiede se esiste un modo più semplice per “dividere” il numero civico dal nome della via.
Ci sono un paio di modi in cui puoi svolgere questa attività. Alcuni potrebbero pensare che usando lo strumento Testo in colonne (nella scheda Dati della barra multifunzione)
darebbe i risultati desiderati. Sfortunatamente, non è il modo migliore per separare il numero civico. Il motivo è semplice: se utilizzi lo strumento specificando un delimitatore, l’unico che ha senso è lo spazio. Ma se lo fai, finisci con “1234 Maple Glen Ave.” essendo distribuito su quattro colonne invece delle due desiderate. Dovresti quindi trovare un modo per incollare nuovamente il nome della via.
L’altro modo per utilizzare potenzialmente lo strumento Testo in colonne è con una larghezza di colonna fissa (invece di un delimitatore). Questo approccio funzionerà solo se tutti i tuoi indirizzi hanno lo stesso numero di cifre nel numero civico. Nella maggior parte dei set di dati, ovviamente, questo non sarà il caso: i numeri civici potrebbero essere quasi qualsiasi numero di cifre e potrebbero anche includere caratteri non numerici (come “1234A”, “1234-B” o “1234-36”).
Un approccio che funzionerà consiste nell’utilizzare formule per separare gli indirizzi originali. Le formule possono inserire il primo spazio nell’indirizzo, restituendo la parte a sinistra dello spazio o la parte a destra. Ecco il modo per tirare fuori tutto prima dello spazio, dato un indirizzo nella cella A1:
=LEFT(A1,FIND(" ",A1)-1)
Se sei assolutamente certo che gli indirizzi non conterranno caratteri non numerici, potresti racchiudere la formula nella funzione VALORE in modo da finire con il numero civico come valore numerico:
=VALUE(LEFT(A1,FIND(" ",A1)-1))
Per afferrare la parte dell’indirizzo che segue il primo spazio puoi usare questa formula:
=MID(A1,FIND(" ",A1)+1,LEN(A1))
Potresti, se preferisci, escogitare una formula che faccia riferimento al numero civico che hai estratto con la prima formula. Supponiamo, ad esempio, che la formula del numero civico si trovi nella colonna B; potresti inserire quanto segue nella colonna C:
=TRIM(SUBSTITUTE(A1,B1,))
Con le tue formule nelle colonne B e C (e gli indirizzi nella colonna A), potresti copiare le formule per tutte le righe necessarie. Quindi puoi selezionare quell’intervallo B: C e usare Incolla speciale per incollare nuovamente i valori in quelle celle. Dopo aver fatto questo puoi tranquillamente cancellare gli indirizzi originali nella colonna A.
Se devi spesso fare molti indirizzi, potrebbe essere meglio utilizzare una macro per separarli. La seguente macro di esempio funziona su qualsiasi intervallo selezionato quando la si esegue. Inserisce una colonna di celle vuote a sinistra della selezione, riempie quelle celle con il numero civico e quindi regola gli indirizzi in modo che il numero civico non sia più incluso.
Sub SplitAddress() Dim c As Range Dim j As Integer Dim n As String Dim addr As String Selection.Insert Shift:=xlToRight Selection.Offset(0, 1).Select For Each c In Selection j = InStr(1, c, " ") n = Left(c, j) c.Offset(0, -1) = n addr = Trim(Right(c, Len(c) - j)) c = addr Next End Sub
Se preferisci, potresti creare una funzione definita dall’utente che restituisca solo il numero civico:
Function GrabHouseNumber(Raw As String) As Text Dim x As Variant Dim House As Variant x = Split(Raw, " ") 'use space char to split elements into array House = x(0) 'first element of array If Left(House, 1) Like "#" Then 'First char is numeric digit GrabHouseNumber = House 'set return value as house number Else GrabHouseNumber = "" 'First char is text, so not a house number End If End Function
Un vantaggio dell’utilizzo della funzione definita dall’utente è che controlla se la prima parte dell’indirizzo originale inizia effettivamente con un numero o meno. In caso contrario, si presume che l’indirizzo non inizi con un numero civico. (L’intero numero civico non deve essere numerico; deve solo iniziare con una cifra.)
_Nota: _
Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.
ExcelTips è la tua fonte di formazione economica su Microsoft Excel.
Questo suggerimento (13350) si applica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 e Excel in Office 365.