estrarre solo una parte di una cella

Anonimo
2018-02-27T16:38:44+00:00

Ciao a tutti...

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.

Grazie

Lucia

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2018-02-27T19:41:59+00:00

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

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

3 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2018-02-28T12:28:48+00:00

    Ciao Lucia,

    L'ho provata su tutte le righe ed ha funzionato su tutte!!!

    Mi hai risparmiato una giornata di smattimento!

    Grazie a te, Lucia, per il cortese riscontro.

    Alla prossima.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2018-02-28T07:40:58+00:00

    Volevo mettere 5 stelle... ma un clic di troppo mi ha fermato a 3!

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2018-02-28T07:38:38+00:00

    Grande!

    Grande!

    Grande!

    L'ho provata su tutte le righe ed ha funzionato su tutte!!!

    Mi hai risparmiato una giornata di smattimento!

    Grazie 1000, ma non basta.

    Buon lavoro e alla prossima!

    Lucia

    La risposta è stata utile?

    0 commenti Nessun commento