Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
Ciao Lucia,
problemone su excel (per me)... per voi sicuramente problemino...!
giuro che c'ho provato da sola...ma adesso mi sono arenata!
In tutte le celle di una colonna ho questi valori:
90100 - PALERMO PA
89125 - REGGIO DI CALABRIA RC
20137 - MILANO-PIAZZA INSUBRIA MI
89125 - REGGIO DI CALABRIA - VIA PAPA GREGORIO RC
Sto usando questa formula trovato su internet:
=ANNULLA.SPAZI(SINISTRA(Y2;TROVA("|";SOSTITUISCI(Y2;" ";"|"; LUNGHEZZA(Y2)-LUNGHEZZA(SOSTITUISCI(Y2;" ";""))))))
che mi fa ottenere questo risultato (mi toglie praticamente tutti i caratteri dopo l'ultimo spazio):
90100 - PALERMO
89125 - REGGIO DI CALABRIA
20137 - MILANO-PIAZZA INSUBRIA
89125 - REGGIO DI CALABRIA - VIA PAPA GREGORIO
Quello che devo invece ottenere in una cella di destinazione è:
PALERMO
REGGIO DI CALABRIA
MILANO
REGGIO DI CALABRIA
Quindi devo eliminare:
tutto ciò che c'è a sinistra prima del "-" (quindi eliminare il cap)
tutto ciò che c'è a destra:
o dopo l'ultimo "spazio" (quindi nei primi 2 casi toglie rispettivamente "PA" e "RC")
o dopo l'ultimo "-" (nel terzo caso toglie "-PIAZZA INSUBRIA MI"; nel quarto caso toglie " - VIA PAPA GREGORIO RC")
Non ho la certezza che la provincia sia sempre separata da spazio...quindi potrei avere anche "20137 - MILANO-PIAZZA INSUBRIA-MI"...però non mi importa, perchè se ne rimane cmq fuori qualcuno, ho altri controlli che porterebbero in evidenza il "caso" a sé...
Se possibile, con una sola formula, altrimenti vanno bene anche più passaggi.
Per evitare formule complesse e verbose oppure l'utilizzo di colonne di appoggio, prova la seguente UDF (funzione utente):
- Alt+F11 per aprire l'editor di VBA
- Alt+IM per inserire un nuovo modulo di codice
- Nel nuovo modulo vuoto, incolla il seguente codice:
'=========>>
Option Explicit
'--------->>
Public Function Comune(r)
Dim arrSplitDash As Variant
Dim sStr As String
Dim iPos As Long
arrSplitDash = Split(r, "-")
sStr = Trim(arrSplitDash(1))
If UBound(arrSplitDash) = 1 Then
iPos = InStrRev(sStr, Space(1))
sStr = Left(sStr, iPos - 1)
End If
Comune = sStr
End Function
'<<=========
- Alt+Q per chiudere l'editor di VBA e tornare a Excel
- Salva il file con l’estensione xlsm
La UDF viene utilizzata come una funzione nativa di Excel:
Potresti scaricare il mio file di prova Marco20180227.xlsm
===
Regards,
Norman