EUCOOKIELAW_BANNER_TITLE

Estrarre una parte di una stringa con STRINGA.ESTRAI

Eccoci qui per un altro piccolo tutorial su Excel. Ieri ho postato una formula utile per validare un indirizzo email e qualche amico mi ha chiesto delucidazioni su un paio di funzioni, una delle quali è STRINGA.ESTRAI, vediamo quindi come estrarre una parte di una stringa con STRINGA.ESTRAI.

La sintassi è molto semplice:

STRINGA.ESTRAI(testo;inizio;numero_di_caratteri)

Poniamo quindi di avere un testo nella cella A1 contenente la frase “Estrai qualcosa“, se in B1 metto la seguente formula

=STRINGA.ESTRAI(A1;3;4)

otterrò come valore “trai“. E se volessi solo eliminare i primi 6 caratteri? Come faccio a sapere quanti estrarne? Semplice, si può usare la funzione LUNGHEZZA che restituisce il numero di caratteri in una cella, dato che saranno sicuramente maggiori o uguali alla lunghezza del testo di partenza andranno sempre bene.

La mia formula diventa quindi

=STRINGA.ESTRAI(A1;5;LUNGHEZZA(A1)

il risultato ottenuto sarà “qualcosa“. E se non sapessi quanti caratteri togliere? Poniamo di voler eliminare tutto fino al primo spazio (quindi la prima parola), per questo possiamo usare la funzione RICERCA

=STRINGA.ESTRAI(A1;RICERCA(" ";A1;1) + 1;LUNGHEZZA(A1))

il risultato sarà, come prima, “qualcosa“. Notate il “+1” all’interno della formula, RICERCA ritorna come valore la posizione di quello che io sto cercando, dato che non ha senso iniziare una parola con uno spazio allora incremento la posizione di 1.

Aggiornamento del 21/01/2016: per ulteriori esempi su questa funzione potete leggere l’articolo “Esempi di utilizzo della funzione STRINGA.ESTRAI” ispirato dai vostri commenti e con spiegazioni passo passo sulla logica dietro alle formule proposte.

Come sempre rimango a disposizione nei commenti 🙂


MESSAGGIO DALL'AUTORE
Hai trovato questo blog utile o interessante? Lascia una tua opinione sul guestbook per farmi sapere cosa ne pensi e come possa migliorarlo.

gianfranco

Appassionato di informatica, fotografia e di tecnologia in generale. Esperto nell'uso di Excel e con tanta voglia di condividere le sue conoscenza con il mondo, sempre pronto a dare una mano (ma non più di due volte, altrimenti rimango senza).

Potrebbero interessarti anche...

229 Risposte

  1. Ciao avrei necessità di estrapolare da una stringa alfanumerica tutto quello che viene prima di un carattere. Ad es. Roma-1973.% oppure Roma-1974!!!!!!=5 . Mi servirebbe estrapolare in entrambi i casi solo Roma- con un'unica formula

    • gianfranco ha detto:

      Ciao,
      scusa se ti rispondo solo ora ma ero in ferie 🙂

      ponendo che la stringa da estrarre sia sempre dal primo carattere fino al segno "-" devi usare una formula come questa

      =SINISTRA(A1;TROVA("-";A1))

      SINISTRA() estra i caratteri da sinistra verso destra di una data cella (nel caso A1) e come secondo parametro vuole il numero di caratteri da estrarre, per ottenerli si usa TROVA() che ritorna la posizione del carattere che stai cercando, nel caso "-".

  2. Grazie…la testo subito! Gentilissimo

  3. Anonimo ha detto:

    Ciao ho un problema con una formula.
    Nella cella D4 ho questa stringa (0-1). In un'altra cella devo fare in modo che mi esca soltato il numero 1 come posso fare?
    Grazie
    Davide

    • gianfranco ha detto:

      Ciao, se è una costante (ovvero se è sempre un numero tipo y-x) puoi usare una semplice formula come quella dell'articolo:

      =STRINGA.ESTRAI(D4;3;1)

      se invece devi estrarre tutti i numeri dopo il simbolo meno ( – ) puoi usare una formula tipo questa:

      =STRINGA.ESTRAI(D4;TROVA("-";D4;1) + 1; LUNGHEZZA(D4))

  4. Anonimo ha detto:

    Grazie sei stato gentilissimo. Ovviamente…..funziona!!

  5. Ciao, la cosa si complica………..
    GE-RIVAROLO-AN-01B1A-1-222140204
    RM-BOLOGNA-DSLGRD3-500155
    RM-SALARIA-AN-01EE1-1-120030415
    RM-MAZZINI-EDSLFAN02-00526

    Avrei necessità di recuperare per tutti i casi solola parte sinistra fino all'ultimo trattino(-) più a destra e quindi:

    GE-RIVAROLO-AN-01B1A-1
    RM-BOLOGNA-DSLGRD3
    RM-SALARIA-AN-01EE1-1
    RM-MAZZINI-EDSLFAN02

    Avrei necessità di una formula puntuale per automatizzare un processo.
    Grazie

    • gianfranco ha detto:

      Sempre più difficile, eh? :D… ok, mi piacciono le sfide ehehe… ecco una formula che ti estrae l'ultima parte dopo l'ultimo trattino (-)… cambia A1 con la cella che preferisci 🙂

      =SOSTITUISCI(A1;DESTRA(A1;LUNGHEZZA(A1)-RICERCA(CODICE.CARATT(254);SOSTITUISCI(A1;"-";CODICE.CARATT(254);LUNGHEZZA(A1)-LUNGHEZZA(SOSTITUISCI(A1;"-";"")))));"")

      • Irene ha detto:

        complimenti per la formula! a me servirebbe però l’esatto opposto di quello che chiede Cristiano Montefusco, mi servirebbe estrarre l’ultima parte dopo il trattino (una virgola nel mio caso). Ho cercato di capire la formula per adattarla, ma non ci sono riuscita…gentilmente qualcuno potrebbe aiutarmi? Grazie mille

        • gianfranco ha detto:

          Ciao Irene,
          nel tuo caso è più semplice, sperando che tu abbia solo una virgola nel testo 🙂

          La formula da usare, nel tuo caso, è la seguente (attenzione ai doppi apici quando copi la formula, vengono formattati in modo diverso nel blog e devi sostituirli con quelli normali)

          =STRINGA.ESTRAI(A1;RICERCA(",";A1)+1;LUNGHEZZA(A1))

          Te la spiego. STRINGA.ESTRAI è spiegata nell’articolo, come primo parametro metti la cella dalla quale vuoi estrarre il testo, come secondo parametro, per dire da dove iniziare ad estrarre devi usare la formula RICERCA passando come parametro cosa vuoi cercare (la virgola) e la cella in cui cercarla. Dato che cos’ il testo partirebbe dalla virgola aggiungiamo un carattere (+1). Infine con LUNGHEZZA gli diamo il numero di caratteri da estrarre, visto che devi estrarre fino alla fine ti basta dargli un numero che sia uguale o più grande del testo da estrarre, per questo uso la lunghezza della cella.

          Se dopo la virgola c’è anche uno spazio che vorresti eliminare ti basta racchiudere tutta la formula nella funzione ANNULLA.SPAZI

          =ANNULLA.SPAZI(STRINGA.ESTRAI(A1;RICERCA(",";A1)+1;LUNGHEZZA(A1)))

          Spero di aver risposto alla tua domanda, se serve altro chiedi pure 🙂

          A presto

          Gianfranco

          • Irene ha detto:

            Grazie Gianfraco! sei stato precisissimo per la spiegazione, ma penso di aver sbagliato io nel darti le indicazioni. la mia stringa è strutturata così
            B.G.D.B.,XXXXXX (C/O pesaro),86688.0614586

            e di virgole ne ho 2, e a me serve isolare il numero dopo la seconda virgola…scusami se non l’ho specificato. Sei in grado di aiutarmi?

            • Irene ha detto:

              nello specifico io cercavo una formula che mi dicesse cosa cercare, e cioè non solo la virgola, ma la SECONDA VIRGOLA. Esiste una formula del genere??

              • gianfranco ha detto:

                Ciao Irene,
                ho creato la formula che fa quello che dici in modo indipendente dal numero di virgole. E’ un po’ più complessa della precedente però

                =STRINGA.ESTRAI(A1;RICERCA(",";SOSTITUISCI(A1;",";" ";LUNGHEZZA(A1)-LUNGHEZZA(SOSTITUISCI(A1;",";""))-1))+1;LUNGHEZZA(A1))

                Provala, dovrebbe funzionare, l’ho scritta dal cellulare. Se non riesci a comprenderla te la spiego volentieri 🙂

                • Irene ha detto:

                  si decisamente mi piacerebbe avere anche una spiegazione 🙂 soprattutto non comprendo l’uso frequente di Lunghezza(), io lo conosco solo per contare i caratteri di una cella…quali altri scopi ha (nella formula in questione intendo)??

                  • gianfranco ha detto:

                    Ciao,
                    eccoti la spiegazione, cerco di metterla giù il più semplicemente possibile (anche se non sarà facile). Poniamo il caso che la cella A1 contenga il testo che mi hai dato come esempio B.G.D.B.,XXXXXX (C/O pesaro),86688.0614586

                    =STRINGA.ESTRAI(A1

                    indica che vogliamo estrarre il testo dalla cella A1, il parametro successivo è la posizione dalla quale iniziare l’estrazione, visto che, nel nostro caso, è la seconda virgola dobbiamo trovare la sua posizione usando la funzione RICERCA

                    RICERCA(",".....

                    Normalmente metterei sempre la cella A1 ma, in questo caso mi troverebbe la posizione della prima virgola, quindi devo togliere le altre virgole, per farlo uso la funzione SOSTITUISCI che sostituisce un carattere con un altro, questa funzione ha 4 parametri

                    SOSTITUISCI(cella,vecchiotesto, nuovotesto,occorrenze)

                    Occorrenze indica quanti dei caratteri che corrispondono al vecchio testo devo sostituire partendo dall’inizio del testo. Nel tuo caso il numero di virgole da sostituire corrisponde al numero totale di virgole meno una, che è l’ultima, per ottenere il numero di virgole totali uso un trucco, visto che non esiste una funzione apposita, qui entra in gioco LUNGHEZZA.

                    LUNGHEZZA(cella) - LUNGHEZZA(SOSTITUISCI(A1",";"")-1

                    Praticamente ottengo la differenza tra la cella così com’è ed il valore della cella in cui le virgole sono state sostituite da niente, quindi senza virgole. Tale differenza, in questo caso, è 2. Il -1 successivo mi serve per dire al primo SOSTITUISCI che le occorrenza non devono essere 2 ma 1 per preservare l’ultima virgola.

                    Il risultato è 42 – 40 – 1 = 1

                    Quindi la formula iniziale, a questo punto dello sviluppo è:

                    =STRINGA.ESTRAI(A1;RICERCA(“,”;SOSTITUISCI(A1;",";" ";1))+1;LUNGHEZZA(A1))

                    Torniamo al SOSTITUISCI che è rimasto, questo trasformerà il valore della cella sostituendo 1 occorrenza della virgola (appena ottenuto) con uno spazio, il valore sarà, virtualmente,

                    B.G.D.B. XXXXXX (C/O pesaro),86688.0614586

                    Come vedi la prima virgola è sparita. Ora, la funzione RICERCA troverà la posizione dell’unica virgola rimasta che è 29. La nostra formula a questo punto sarà:

                    =STRINGA.ESTRAI(A1;29+1;LUNGHEZZA(A1))

                    Il +1 dopo il 29, come spiegato nel commento precedente, mi serve per eliminare la virgola dall’estrazione, perché devo partire dal carattere successivo ad essa. L’ultima LUNGHEZZA mi serve per dire alla formula quanti caratteri deve estrarre partendo dalla virgola, come spiegato nell’altro commento deve essere uguale o maggiore al numero dei caratteri rimanenti, quindi, per essere sicuro uso la lunghezza di tutta la cella, a questo punto ci troviamo in questa situazione

                    =STRINGA.ESTRAI(A1;30;42)

                    Ed il gioco è fatto. So che è un ragionamento un po’ lungo e contorto (pensa che nella mia testa è semplice eheh) ma non mi viene altra soluzione per far ciò che richiedi.

                    Usando questa formula, inoltre, il numero di virgole può essere variabile, da 1 a n.

                    Se qualcosa non ti è chiaro fammi sapere 🙂

                    A presto

          • Francesca ha detto:

            Ciao Gianfranco, anzitutto complimenti per la disponibilità e la chiarezza!
            Io avrei bisogno esattamente dello stesso procedimento, ovvero dovrei estrarre tutto ciò che si trova dopo il simbolo / di una stringa, solo che provando la formula che sopra hai spiegato nella cella mi rimane la formula scritta senza che compaia nessun risultato, come se fosse un semplice testo. Sai dirmi perchè? Come posso risolvere? Ti anticipo che la stringa dopo il simbolo / varia di lunghezza e dunque non posso usare una formula che richieda un conteggio dei caratteri perchè sarebbero sempre diversi.

            Grazie mille,
            Francesca

            • gianfranco ha detto:

              Ciao Francesca,
              le possibilità sono 2, o hai dimenticato di mettere il simbolo uguale ( = ) all’inizio della formula oppure la stessa è formattata come testo. In questo caso devi vare click con il tasto destro del mouse sulla cella, selezionare “Formato Cella”, quindi sulla sinistra selezionare “Generale” e premere su OK. A questo punto clicca come se volessi modificare la formula e confermala subito. Così dovrebbe andare a posto

              • Francesca ha detto:

                Grazie mille!! Ho provato ad usare i tuoi consigli, anche così non funzionava…alla fine ho trasferito tutto su un’altra scheda di lavoro e cancellata la precedente e HA FUNZIONATO! Non so esattamente cosa si fosse impostato, ma comunque grazie per avermi fatto scoprire questa formula 🙂
                Questo forum è davvero utile, complimenti a tutti.

                un saluto

                • gianfranco ha detto:

                  Grazie per i complementi 🙂

                  Se vuoi mandarmi via email il vecchio file cerco di capire cosa non ti funzionava, nel caso fossi curiosa 🙂

          • Roberta ha detto:

            Ciao, premesso che uso Excel da principiante ho provato la formula che hai suggerito ad Irene =ANNULLA.SPAZI(STRINGA.ESTRAI(A1;RICERCA(“,”;A1)+1;LUNGHEZZA(A1))) sostituendo solo i due punti alla virgola perché nel mio caso ho una tabella di 8 colonne per 245 righe in cui in ognuna devo mantenere solo il numero dopo “:”
            Funziona bene per una cella, ma appunto, volendo estendere l’analisi a tutte le celle come si fa?
            Grazie
            Roberta

    • gianfranco ha detto:

      Volevo dire che ELIMINA l'ultima parola dopo il trattino… pardon…

  6. Complimenti Gianfranco………..Veramente!!! Onestamente non conoscevo le formule SOSTITUISCI e CODICE.CARATT(254)… Adesso studierò un pò la logica della fomula totale che mi hai fornito… Grazie davvero… A presto!!!

  7. Anonimo ha detto:

    ciao ho un problema con un esercizio.
    la prof. non spiega e dice di leggere la dispensa ma non ci capisco niente. l'esercizio dice: STRINGA.ESTRAI() ,
    creare un foglio elettronico che riceve dall'ingresso una stringa dall'utente e
    crea una tabella dove per ciascuna lettera dell'alfabeto, ne calcola l'occorrenza(quante volte compare nella stringa)
    grazie.

  8. Anonimo ha detto:

    Ciao,
    avrei un problema. Ho una stringa del genere:
    1_01_05_00_0026_0S
    quello che devo fare è eliminare i caratteri "_", per ottenere un risultato:
    101050000260S
    Ho provato a mettere insieme le informazioni scritte sopra ma non riesco ad applicarle nel mio caso (essendo ricorsiva la presenza del "_" non mi capacito).
    Grazie per chi mi dia una mano!

    • gianfranco ha detto:

      Ciao,
      in questo caso la funzione da usare è sostituisci()

      =SOSTITUISCI(A1;"_";"")

      cambia A1 con la cella che contiene il tuo valore. Maggiori info puoi trovarle qui http://www.tuttoexcel.it/2014/06/06/sostituire-una-parte-di-stringa-con-la/

      • Alice ha detto:

        Salve,
        vi scrivo per il mio problema: ho una stringa su una cella intervallata dal simbolo / , quindi una cosa come 123/456/789 ed avrei bisogno di mettere ciò che c’è tra le / (in questo caso i numeri) in 3 celle diverse. Sapreste dirmi se c’è una formula che fa al caso mio?
        Molte grazie!

        • gianfranco ha detto:

          Buongiorno Alice,
          ci sono 3 soluzioni, la prima, se non serve mantenere il dato originale, è usare la funzione “Testo in colonne” dalla scheda DATI di Excel.

          La seconda, semplice, consiste nell’installare l’addin gratuito che trovi qui. Ti aggiunge alcune nuove funzioni tra cui TE.ESTRAI.CAMPO, per separare i 3 valori può usare questa formula in 3 cella


          =TE.ESTRAI.CAMPO(A1;"/";1)

          cambiando l’ultimo parametro, 1, con 2 e 3, in questo modo si estraggono i 3 campi.

          La terza soluzione è quella di usare 3 diverse formule basate su STRINGA.ESTRAI

          Per la prima parte

          =STRINGA.ESTRAI(A1;1;TROVA("/";A1)-1)

          Per la seconda

          =STRINGA.ESTRAI(A1;TROVA("/";A1)+1;TROVA(CODICE.CARATT(255);SOSTITUISCI(A1;"/";CODICE.CARATT(255);2))-TROVA("/";A1)-1)

          e per la terza parte

          =STRINGA.ESTRAI(A1;TROVA("/";A1;TROVA("/";A1)+1)+1;LUNGHEZZA(A1))

          Spero di esser stato utile 🙂

          Buona giornata

    • Anonimo ha detto:

      Perfetto, l'avevo notata ma ho frainteso il suo significato (la descrizione mi risultava poco chiara).
      Ogni modo grazie infinite! Molto pronto e preparato, complimenti!

    • gianfranco ha detto:

      Grazie per i complimenti :)… se posso esserti ancora d'aiuto non esitare a commentare…

    • Francesca ha detto:

      Ciao! Immagino che da aprile avrai risolto XD comunque volevo consigliarti in questi casi il semplice “trova e sostituisci”, ovvero selezioni la parte con le stringhe, vai a trova-sostituisci dove a trova metti il simbolo che vuoi far sparire _ e a sostituisci non metti nulla, cioè posizioni solo il cursore all’inizio come se dovessi scrivere. Clicca “sostituisci tutto” e dovrebbe toglierti i trattini.

      Saluti

  9. Ciao,

    io avrei bisogno di estrarre il testo tra i 2 _. Esempio: "51084_rosa_3.jpg" avrei da estrarre "rosa". E' possibile?.

    Grazie in anticipo.

    • gianfranco ha detto:

      Ciao,
      si, è possibile, ponendo che la stringa sia contenuta in A1 la formula da inserire è:

      =STRINGA.ESTRAI(STRINGA.ESTRAI(A1;TROVA("_";A1)+1;LUNGHEZZA(A1));1;TROVA("_";A1)-1)

      praticamente si effettua un estrazione nidificata

      se hai bisogno di chiarimenti sulla formula chiedi pure 🙂

      • Lucia ha detto:

        Ciao, mi unisco a questa soluzione per un problema leggermente diverso.
        Nella cella A1 ho un testo del tipo:

        Cliente: mario; scadenza: 12/2/2016
        Oggetto: Pippo pluto paperino
        Richiesta: non riesco a ……… Saluti

        Ho necessità di estrarre tutto ció che é compreso tra la parola “oggetto:” (esclusa) e la parola “richiesta:” (esclusa). Quindi nella cella b1 dovrei trovarmi “Pippo pluto paperino”.

        Ho usato questa formula e sono riuscita ad escludere fino ad “oggetto:” ma non riesco a definire la parte finale della formula….

        Grazie

        Lucia

        • gianfranco ha detto:

          Ciao Lucia,
          la soluzione per il tuo problema è semplice, eccola qui


          =STRINGA.ESTRAI(A1;TROVA("Oggetto:";A1)+LUNGHEZZA("Oggetto:");TROVA("Richiesta:";A1))

          Se hai problemi ad usarla chiedi pure 🙂

          • Lucia ha detto:

            Ciao, ho provato la formula, ma nella nuova cella scrive pure quello che si trova dalla parola “Richiesta….” in poi.

            Lucia

            • gianfranco ha detto:

              Ciao Lucia,
              hai ragione, purtroppo scrivendo la formula da cellulare mi sono mangiato un pezzo finale della formula, eccola corretta (ora sono sul pc ed è più facile)


              =STRINGA.ESTRAI(A1;TROVA("Oggetto:";A1)+LUNGHEZZA("Oggetto:");TROVA("Richiesta:";A1)-TROVA("Oggetto:";A1)-LUNGHEZZA("Oggetto:"))

  10. Gabriella Liberati ha detto:

    Ciao,
    avrei bisogno di estrarre da una stringa una parola lunga 16 caratteri. Mi spiego meglio, dovrei verificare se in una stringa è presente un codice fiscale. Ad esempio nella stringa "Allego di seguito il mio codice fiscale AAABBB80P43H501L per verifiche" dovrei estrarre soltanto il valore AAABBB80P43H501L. Grazie in anticipo.

    • gianfranco ha detto:

      Ciao Gabriella,
      purtroppo con le formule non si riesce (o almeno, ho provato più di un tentativo ma non funzionano). Per ovviare il problema ho scritto una piccola macro che può essere usata come formula per ottenere il risultato che vuoi, se usi il modulo di contatto che trovi in alto a destra mi arriva il tuo indirizzo email (così non lo devi condividere pubblicamente) attraverso il quale potrò risponderti allegando il file che ho appositamente realizzato e spiegandoti come inserire la macro nel tuo foglio.

      A presto

  11. Gabriella Liberati ha detto:

    Ciao Gianfranco, la macro ha funzionato benissimo e l'ho utilizzata come base anche per altre cose che mi servivano. Ti ringrazio moltissimo per la velocità nella risposta e complimenti per la competenza che hai maturato su excel. Alla prossima volta! Gabriella

  12. Anonimo ha detto:

    Ciao; se posso approfittare della tua disponibilità vorrei chiederti come poter unire il risultato di due formule in celle separate tipo A1 e B1 dove in A1 la formula "SE" mi restituisce un testo e in B1 la formula "adesso()" mi restitusce una data.
    Spero di essere stato chiaro nell'esporre la domanda.
    Grazie anticipatamente.

    • gianfranco ha detto:

      Ciao, scusa il ritardo ma non ho potuto rispondere prima, le formule non possono cambiare il valore di celle al di fuori di quella in cui è scritta la formula stessa, quindi devi mettere una formula in A1 ed una in B1

  13. Anonimo ha detto:

    Ciao, avrei bisogno di eliminare da una stringa il contenuto di una cella di riferimento. Mi spiego: nella cella A1 poniamo di avere la parola "casa", nella cella B1 "casa, palla, nave"…come posso con una funzione eliminare la parola casa e la virgola dalla cella B1, lasciando solo "palla, nave"? è un'operazione che mi serve fare su molte celle con contenuti diversi a seconda della riga. Grazie mille!

    • gianfranco ha detto:

      Ciao,
      puoi usare la funzione SOSTITUISCI, qui trovi l'articolo che spiega come funziona ma se hai problemi non esitare a chiedere e cercherò di esser più chiaro

      a presto

    • Anonimo ha detto:

      ho provato con sostituisci, ma nella barra in alto dove si trova il contenuto della cella non scompare la parola…mentre nella cella vera e propria si…

    • gianfranco ha detto:

      Per farla semplice, comunque, la formula che serve a te è:

      =SOSTITUISCI(B1;A1;"")

      Che significa, tradotta in italiano, sosituisci in B1 il valore di A1 con niente ("")

    • gianfranco ha detto:

      Ho capito, quindi vuoi che elimini definitivamente la stringa, a questo punto puoi fare così, inserisci una colonna accanto alla B (quindi C) metti la formula che ti ho detto in C1 e la trascini fino in fondo, quindi selezioni tutta la colonna C, ti posizioni in B1 e vai su INCOLLA SPECIALE -> VALORI in modo che i valori di B vengano sostituiti con quelli di C, a questo punto puoi eliminare la colonna C

  14. Anonimo ha detto:

    Perfetto! grazie mille!!!

  15. Andrea Digirolamo ha detto:

    ciao, avrei bisogno di un aiuto: ho la necessita di troncare tutto quello che c'è dopo il numero, numero che puoi variare…sinceramente non se si puo fare, ma visto ke accetti le sfide ci provo 😉

    grazie

  16. Andrea Digirolamo ha detto:

    ok 🙂
    Esempio:

    VIA PASCOLI, 18/9 P.02
    VIA PASCOLI, 30 P.2 S.A
    VIA PERGOLESI, 12 P.02
    VIA ROSSELLI, 58/A P.02 I.A31 S.A2

    mi servirebbe eliminare tutto quello che c'è dopo il numero che è situato subito dopo la virgola.

    Grazie

    • gianfranco ha detto:

      Ciao Andrea,
      se hanno tutti il "P." dopo il numero è facile

      =STRINGA.ESTRAI(A1;1;TROVA(" P.";A1)-1)

      se così non fosse è un po' più complicato ma non impossibile 🙂

    • gianfranco ha detto:

      Questa è la versione che funziona se la P. non è sempre presente

      =ANNULLA.SPAZI(STRINGA.ESTRAI(A2;1;TROVA(" ";A2;TROVA(",";A2)+2)))

  17. Andrea Digirolamo ha detto:

    ciao, eh purtroppo no…quelli con la P era un esempio, ma ci sono anche con altre altre lettere/simboli..

  18. Andrea Digirolamo ha detto:

    ok, scusa ma come mai esce #valore! ?

  19. Andrea Digirolamo ha detto:

    ciao, la formula funziona ma t faccio vedere un esempio:

    aumento il livello di difficolta:
    1-si puo fare che sia se trova lo spazio e sia se trova "/" applica la formula che hai fatto?Es. VIA COSTA, 14/D P.02 –>VIA COSTA, 14/D
    2- se invece non c'è niente dopo il numero mi restituisce il la stessa stringa.:
    via Costa, 14 –> Via Costa 14

    grazie mille:)

    • gianfranco ha detto:

      Ecco cosa ti generava l'errore #VALORE 😀

      Certo, puoi usare questo sistema:

      =SE.ERRORE(ANNULLA.SPAZI(STRINGA.ESTRAI(A1;1;TROVA(" ";A1;TROVA(",";A1)+2)));A1)

      Fammi sapere se ti funziona 🙂

    • Andrea Digirolamo ha detto:

      eggia :)..mentre per il simbolo / che puo stare al posto dello spazio, dopo il numero?

      non ti liberi d me cosi facilmente…ahahaha

      grazie

    • gianfranco ha detto:

      Stiamo saturando i commenti 😛

      Non te l'ho messo perché altrimenti tutti i numeri tipo 40/D verrebbero tranciati a 40 e basta, se mandi una lettera rischi che non arrivi mai, inoltre potrebbe creare problemi inaspettati perché se son presenti entrambi non sai dove va a tagliare la stringa.

      Sicuro di volere una formula così? Personalmente queste sono le eccezioni che gestisco a mano, il mio consiglio è di applicare la formula e, sulla colonna dei risultati, applicare un filtro per tutte le celle che contengono "/".

      Lo dico per te, se vuoi la formula posso provare a scriverla ugualmente 🙂

  20. Andrea Digirolamo ha detto:

    eggia, dai ke abbiamo finito….

    cmq si hai ragione, va benissimo così;)

    grazie mille…ciaooo:)

  21. gianfranco ha detto:

    Di nulla, a presto… e seguimi 😉

  22. Anonimo ha detto:

    Ciao,
    avrei bisogno di una formula per estrarre un testo da una cella.

    Es.

    60% poliestere,40% cotone
    100% poliestere

    In entrambi i casi avrei bisogno di estrarre solamente "poliestere"

    E' possibile?

    grazie mille

    • gianfranco ha detto:

      Ciao, non ho ben capito cosa ti serva, eliminare le percentuali e tenere i nomi dei tessuti o ricavare solo la parola poliestere se presente nella stringa iniziale?

  23. Flavia ha detto:

    Ciao,

    grazie della formula. Sarebbe però convertire un numero in centimetri (es. 88/96 o 102/118) con l'equivalente in inches sapendo che 1 cm sono 0.393700787 inches arrotondando il risultato. Risultato 88/96 -> 35/38 102/118 -> 40/46

    Sarebbe possibile senza VBA e magari senza celle di appoggio?

    Grazie mille.

    • gianfranco ha detto:

      Ciao Flavia,
      si, è possibile, se le stringhe sono sempre formate da due numeri suddivisi da un "/" bisogna combinare qualche funzione… eccoti una formula che assume che il valore sia in A1 e restituisce i numeri moltiplicati ed arrotondati

      =ARROTONDA(STRINGA.ESTRAI(A1;1;TROVA("/";A1)-1)*0,393700787;0) & "/" & ARROTONDA(STRINGA.ESTRAI(A1;TROVA("/";A1)+1;LUNGHEZZA(A1))*0,393700787;0)

  24. Anonimo ha detto:

    Buongiorno,

    due quesiti:

    1) In una colonna ho circa 30.000 celle con stringhe di due tipi:

    DPXX YYY ZZZ
    DPXXXX YYY ZZZZ – X, Y, Z

    Avrei la necessità di eliminare tutto il testo a partire da " -" (compreso " -") e di lasciare tutto com'è sulle celle in cui la parte di testo che parte da " -" non è presente.

    2) In un'altra delle colonne dello stesso foglio di cui sopra, ho stringhe del tipo seguente:

    XXX (YYY YYYY) ZZZZZ
    XXXX YYYY

    Avrei bisogno di eliminare il testo fino al primo spazio, ma partendo da destra.

    Magari non è difficile, ma è un foglio su cui ho dovuto sperimentare, da assoluto profano, altre 100 formule trovate qua e là… e sono entrato in confusione totale… 😉

    Grazie per la disponibilità!!!

    • gianfranco ha detto:

      Ciao,
      innanzitutto scusa per il ritardo ma ho approfittato del ponte per staccare qualche giorno :)… allora, per il primo esempio devi usare questa formula:

      =SE(VAL.ERR(TROVA("-";A1));A1;ANNULLA.SPAZI(STRINGA.ESTRAI(A1;1;LUNGHEZZA(A1)-TROVA("-";A1))))

      Praticamente, per prima cosa usiamo un SE per valutare attraverso VAL.ERR se la funzione TROVA restituisce un errore in quanto il – non è presente, in questo caso verrà restituita la cella così come è, qualora invece la formula restituisse un numero perché – è presente si passa all'estrazione usando STRINGA.ESTRAI passando come parametri la cella che contiene il testo (A1 nel mio caso), inizio da 1 e lunghezza uguale alla lunghezza della stringa meno la posizione di -, il tutto passato come valore ad ANNULLA.SPAZI per evitare che ti rimangano spazi all'inizio o alla fine.

      Il secondo esempio te lo metto nel prossimo commento

    • gianfranco ha detto:

      Eccoci con la seconda formula

      =ANNULLA.SPAZI(SINISTRA(A1;TROVA("|";SOSTITUISCI(A1;" ";"|"; LUNGHEZZA(A1)-LUNGHEZZA(SOSTITUISCI(A1;" ";""))))))

      ANNULLA.SPAZI serve, come prima, ad eliminare i vari spazi che si trovano a fine o inizio riga. SINISTRA serve ad estrarre un numero di caratteri di una stringa partendo da sinistra, il pezzo della formula TROVA("|";SOSTITUISCI(A1;" ";"|"; LUNGHEZZA(A1)-LUNGHEZZA(SOSTITUISCI(A1;" ";"")))))) serve a sostituire l'ultimo spazio con il simbolo | ed in seguito a trovarne la posizione per estrarre la stringa fino a quel punto

      Se non ti è chiaro qualcosa commenta pure o usa il modulo di contatto per contattarmi 🙂

    • Anonimo ha detto:

      Ciao,

      innanzitutto ti ringrazio per le risposte. Per il ritardo figurati, ci mancherebbe pure… 😉

      Per quanto riguarda le formule, la prima è OK.

      La seconda, invece, mi lascia la stringa praticamente invariata.

    • gianfranco ha detto:

      La prima l'ho anche ottimizzata, questa funziona meglio ed occupa meno spazio

      =SE(VAL.ERR(TROVA("-";A1));A1;ANNULLA.SPAZI(SINISTRA(A1;TROVA("-";A1)-1)))

      Puoi darmi la stringa che ti lascia inviariata? Perché in tutte le prove che ho fatto viene estratto sempre tutto fino all'ultimo spazio.

      Clicca qui per scaricare un file di esempio con entrambe le formule funzionanti

  25. Anonimo ha detto:

    La prima formula in versione ottimizzata funziona meglio di quella in prima versione.

    Quanto alla seconda formula, succede un cosa molto strana (almeno per me): digitando la stringa in questione tramite tastiera, va tutto bene; se, invece, la stringa viene incollata dalla colonna in cui sono presenti i valori da "filtrare", la formula non ha effetto.

    Da cosa dipende?

    • gianfranco ha detto:

      Per stringa intendi la formula? Perché in questo caso devi controllare che tutti i riferimenti siano giusti. Se invece parli della stringa da analizzare la cosa è molto strana, non dovrebbe succedere (ho provato a riprodurre il tuo errore ma non mi riesce di riprodurlo)

  26. Anonimo ha detto:

    Davvero da non credere.

    Se inserisco manualmente la stringa da filtrare sul foglio che hai allegato tu, funziona tutto alla perfezione.

    In realtà, la mia colonna è il risultato di un "incolla valori" da una copia di una colonna gemella, ottenuta tramite un'altra formula.

    Probabilmente c'è qualcosa che non va sul mio foglio, dato che la tua formula appare perfetta.

    Vedrò di capire cosa.

    • gianfranco ha detto:

      Se vuoi provare a mandarmi il foglio attraverso la pagina di contatto sarò ben felice di controllare 🙂

      • Luca ha detto:

        Ciao Gianfranco,

        ho dimenticato di informarti che ho trovato e risolto il problema.

        La colonna che copiavo e incollavo, quella da filtrare con la tua seconda formula, riportava uno spazio finale su ogni cella. Questo spiega il perchè se digitavo (anzichè copiare e incollare) la stringa, il risultato era corretto.

        Con un semplice ANNULLA.SPAZI ho sistemato l’intera colonna e la tua PREZIOSISSIMA formula ha fatto il resto.

        Non bisogna mai dare nulla per scontato nella vita… 😉

        Grazie mille!!!

        • gianfranco ha detto:

          Ottimo Luca 🙂
          scusa se ho abbandonato un po’ l’argomento ma come avrai notato sto ristrutturando tutto il sito, a breve ci saranno anche delle belle novità, quindi ogni tanto ripassa… e se hai bisogno di aiuto non esitare a chiedere

          Buon fine settimana

          • Luca ha detto:

            In realtà ti ho inviato un’altra richiesta tramite modulo di contatto, ma il sistema non mi ha permesso di allegare un file .xlsx

  27. Andrea Digirolamo ha detto:

    Ciao,
    eccomi con un nuovo quesito:)

    Vorrei una funzione che mi cercasse all’interno di una tabella d valori, il contenuto di una stringa e che me lo rimpiazzasse con quella della tabella.

    Esempio:
    contenuto stringa: Via manzoni
    contenuto tabella: via manzoni alessandro
    risultato: mi dv rimpiazzare la stringa con via manzoni alessandro

    Si può fare?
    Grazie

  28. Andrea Digirolamo ha detto:

    Ciao,
    ma t è arrivato il mio post? io nn lo vedo..

    • gianfranco ha detto:

      Si, è arrivato ma sono riuscito ad approvare solo ora dal cellulare… stasera ti metto giù la formula che comunque non sostituisce il contenuto della cella ma va in una colonna accanto

      • Andrea Digirolamo ha detto:

        ok, grazie mille

      • Andrea Digirolamo ha detto:

        ciao, hai news x me??:)

      • Andrea Digirolamo ha detto:

        giorno gianfranco,
        perdona l’insistenza, ma sei riuscito a fare la formula? sarebbe urgente…grazie mille

        • gianfranco ha detto:

          Ciao,
          eccomi qui e scusa il ritardo, sono stato un po’ preso in questo periodo. Per fare quello che vuoi basta usare un CERCA.VERT ma con una condizione, l’inizio del nome della via incompleto deve corrispondere all’inizio della via completa, nel tuo caso “via manzoni” corrisponde a “via manzoni alessandro”, se fosse stato “via alessandro” non avrebbe funzionato. Prima di tutto devi creare una nuova colonna, le formule non possono sostituire il valore delle celle a cui fanno riferimento, per quello ti servirebbe una macro.
          La formula da scrivere è, quindi:

          =CERCA.VERT(cella & "*", elenco, 1, 0)

          poniamo che la cella che contiene la via sia A1 e che l’elenco delle celle contenenti l’invio sia nella colonna A Foglio2, la formula sarebbe:

          =CERCA.VERT(A1 & "*";Foglio2!A:A;1;0)

          l’aggiunta di & “*” fa si che venga cercato il contenuto di A1 seguito da qualunque altro carattere. Viene restituito il primo indirizzo trovato nell’elenco, quindi, se ci fossero “Via Manzoni Alessandro” e “Via Manzoni Pippo” verrebbe restituito sempre il primo risultato.

          Spero che ti possa essere d’aiuto, altrimenti fammi sapere

          A presto

          Gianfranco

          • Andrea Digirolamo ha detto:

            ciao,
            non t preoccupare.
            Ma se volessi applicare la condizione che il nome della via completa deve contenere la via incompleta? senza che sia all’inizio o alla fine…

            tipo: via camillo benso conte di cavour deve contenere via cavour

            grazie

            • gianfranco ha detto:

              L’unica cosa che ti posso suggerire, senza ricorrere ad una macro, è la seguente:

              =SE.ERRORE(CERCA.VERT(A1 & "*";Foglio2!A:A;1;0);SE.ERRORE(CERCA.VERT(ANNULLA.SPAZI(SOSTITUISCI(A1;"via";"")) & "*";Foglio2!A:A;1;0);SE.ERRORE(CERCA.VERT("*" & ANNULLA.SPAZI(SOSTITUISCI(A1;"via";"")) & "*";Foglio2!A:A;1;0);A1)))

              Praticamente usa il primo metodo di ricerca, se non funziona toglie la parola “via” ed effettua nuovamente la ricerca con la parte rimanete seguita da qualunque altra stringa, se nemmeno quella viene trovata cerca la parola preceduta e seguita da qualunque altra parola, se nemmeno questa viene trovata resistuisce ciò che c’è scritto nella cella. Per qualcosa di più avanzato devo scriverti una macro

              Gianfranco

  29. Massimiliano ha detto:

    Complimenti per questo articolo! anche se è del 2013 non invecchia mai 😉
    Cerco anche io di approfittare della tua disponibilità prima che della tua competenza con un problema che mi sta facendo uscire pazzo!
    Dunque io ho diverse centinaia di celle che contengono informazioni in formato testuale, ad esempio:

    relatore: Giuseppe Perrotta correlatori: Cesare Laviola, Mario Salerno Università degli studi di Bari, Dipartimento di patologia vegetale

    Purtroppo l’ordine di queste informazioni non è uguale per tutte le celle. Prendendone un’altra a caso ad esempio:

    Consorzio tra le università di Genova, Torino, Pavia Dipartimento di chimica analitica, Università di Torino relatore: Edoardo Mentasti

    Quello di cui io avrei bisogno di fare è estrarre da queste celle il nome del relatore (che, come vedi, può essere in una posizione qualunque della stringa).

    Non avresti qualche suggerimento? Ti prego!

    • gianfranco ha detto:

      Ciao Massimiliano,
      trovare il relatore non è un problema visto che è sempre preceduto dalla stringa “relatore:”, il problema, semmai, è trovare la fine del nome. Ti ho scritto al volo una formula (che ora purtroppo non ho il tempo di spiegarti ma posso farlo stasera, se ti interessa) che funziona solo nel caso in cui il nominativo sia composto da due parole: nome e cognome.
      Per intenderci, Mario Rossi viene estratto correttamente mentre Leonardo Da Vinci viene estratto come “Leonardo Da”. Spero possa comunque esserti utile, al massimo posso cercare qualcosa in più ma ho i miei seri dubbi di poter fare di meglio con una formula

      =STRINGA.ESTRAI(A1;TROVA("relatore:";MINUSC(A1);1)+10;SE.ERRORE(RICERCA(CODICE.CARATT(254);SOSTITUISCI(STRINGA.ESTRAI(A1;TROVA("relatore:";MINUSC(A1);1)+10;LUNGHEZZA(A1));" ";CODICE.CARATT(254);2));LUNGHEZZA(A1)))

      • Massimiliano ha detto:

        Non ho parole! Grazie mille! Ho provato a interpretarla, ma se hai tempo di spiegarla mi faresti un gran favore! Se poi si riuscisse a fare qualcosa per i doppi nomi e cognomi sarebbe fantastico: sono quasi 10mila record e farlo a mano è improponibile… In ogni caso grazie davvero!

      • gianfranco ha detto:

        Rieccomi Massimiliano,
        ho modificato la formula, ora trova anche i nomi composti ma solo in alcuni casi ovvero se il nome è dentro la stringa e non alla fine e se dopo il nome c’è la parola “correlator” (così vale sia per “correlatore” che per “correlatori”). Negli altri casi restituisce solo i primi 2 nomi.

        Ci sarebbe un’altra soluzione ma saresti tu a dovergli dire quando un nome è composito e quando no. Di più non posso fare se non scrivendo una macro e nemmeno così sarebbe facile.

        Ecco la nuova formula:

        =STRINGA.ESTRAI(A2;TROVA("relatore:";MINUSC(A2);1)+10;SE.ERRORE(RICERCA("correlator";STRINGA.ESTRAI(A2;TROVA("relatore:";MINUSC(A2);1)+10;LUNGHEZZA(A2));1)-2;SE.ERRORE(RICERCA(CODICE.CARATT(254);SOSTITUISCI(STRINGA.ESTRAI(A2;TROVA("relatore:";MINUSC(A2);1)+10;LUNGHEZZA(A2));" ";CODICE.CARATT(254);2));LUNGHEZZA(A2))))

        Per la spiegazione… vediamo se riesco a spiegarti.

        Prendo come esempio: “relatore: Giuseppe Perrotta correlatori: Cesare Laviola, Mario Salerno Università degli studi di Bari, Dipartimento di patologia vegetale”

        Per prima cosa cerco la parola “relatore:” per identificare dove iniziare l’estrazione, e lo faccio con questa parte, MINUSC serve a ridurre tutto in minuscolo in modo che ci sia sempre una corrispondenza anche se cìè scritto “Relatore: ” o “RELATORE: ”

        TROVA("relatore:";MINUSC(A2);1)+10

        Il +10 alla fine serve a dire che non voglio iniziare l’estrazione con la parola relatore ma subito dopo. Nel nostro caso quindi la formula diventa

        =STRINGA.ESTRAI(A2;11;SE.ERRORE(RICERCA("correlator";STRINGA.ESTRAI(A2;TROVA("relatore:";MINUSC(A2);1)+10;LUNGHEZZA(A2));1)-2;SE.ERRORE(RICERCA(CODICE.CARATT(254);SOSTITUISCI(STRINGA.ESTRAI(A2;TROVA("relatore:";MINUSC(A2);1)+10;LUNGHEZZA(A2));" ";CODICE.CARATT(254);2));LUNGHEZZA(A2))))

        La parte successiva serve a determinare fino a dove estrarre. Come prima cosa provo a vedere se nella stringa che va da “relatore: ” in poi trovo la parola “correlator” e, nel caso, restituisco la sua posizione -2 (ovvero da dove inizia “correlator” meno lo spazio e la lettera C della parola stessa) quindi, la formula diventa

        =STRINGA.ESTRAI(A2;11;SE.ERRORE(19;SE.ERRORE(RICERCA(CODICE.CARATT(254);SOSTITUISCI(STRINGA.ESTRAI(A2;TROVA("relatore:";MINUSC(A2);1)+10;LUNGHEZZA(A2));" ";CODICE.CARATT(254);2));LUNGHEZZA(A2))))

        Come vedi c’è un SE.ERRORE questo perché se non ci fosse stata la parola “correlator” sarebbe passato ad una seconda funzione per trovare il secondo spazio visto che il primo è il separatore tra nome e cognome. Per questa seconda parte puoi leggere questo articolo.

        Quindi, posto che non ci sono errori siamo a questo punto

        =STRINGA.ESTRAI(A2;11;19)

        Ovvero estrai da A2 partendo da 11 per 19 caratteri.

        Spero sia un po’ più chiaro 🙂

        Gianfranco

  30. Massimiliano ha detto:

    Gentile Gianfranco, ti contatto qui perché non riesco in privato.
    Speravo dopo la tua replica a questo post di riuscire a cavarmela da solo, ma sto davvero impazzendo. Come puoi leggere dalla mia domanda, io ho questo lunghissimo elenco di record che contengono diverse informazioni (titolo, relatore, università, dipartimento…) che io vorrei dividere in diverse celle. Il problema sorge dal momento che questo campo non ha la stessa struttura per tutti i record, dunque non riesco a trovare una maniera sufficientemente rapida per “pulire” queste informazioni, onde evitare di doverlo fare manualmente una per una! Se tu fossi così gentile da darci un’occhiata io non avrei nessun problema a inviarti il file intero o parte di esso.
    Resto in attesa di una tua risposta.
    Massimiliano

    • gianfranco ha detto:

      Ciao Massimiliano,
      ho ricevuto il tuo messaggio, inviami il file in allegato all’indirizzo email dal quale ti ho risposto, gli darò un’occhiata quanto prima 🙂

      • Franco ha detto:

        Ciao! Ti sottopongo un nuovo quesito.
        Devo estrarre le prime due parole da una stringa di testo che può essere formata anche da più parole separate tra loro da uno spazio.
        Che formula usare?

        • gianfranco ha detto:

          Ciao Franco,
          se la condizione è sempre la stessa, ovvero le prime due parole e sempre separate da spazio, la formula che puoi usare è la seguente:


          =STRINGA.ESTRAI(A1;1;TROVA(CODICE.CARATT(254);SOSTITUISCI(A1;" ";CODICE.CARATT(254);2))-1)

          A presto 🙂

          • Franco ha detto:

            Ciao, Gianfranco.
            Ho provato subito la formula che mi hai postato.
            Mi da errore #VALORE! se la stringa è formata solo da una o due parole (solo cognome o cognome e nome o viceversa) oppure se le prime parole contengono un apostrofo (es. D’Errico Giovanni o Giovanni D’Errico).
            A volte, l’apostrofo non da alcun errore (es. La D’Abramo Giuseppe), ma da errore nel caso sia scritto ad es. D’Abramo Giuseppe, come nel caso precedente.
            Se la seconda parola è costituita da un cognome composto (es. Marco Di Maio), l’estrazione si interrompe a Di.

            • gianfranco ha detto:

              Ciao Franco,
              il primo problema si risolve facilmente in questo modo:


              =SE.ERRORE(STRINGA.ESTRAI(A1;1;TROVA(CODICE.CARATT(254);SOSTITUISCI(A1;" ";CODICE.CARATT(254);2))-1);A1)

              Praticamente, nel caso in cui ci sia solo 1 nome o nome e cognome senza altro dopo, restituisce interamente la cella A1. Il secondo problema, quello del cognome parziale, è problematico risolverlo perché Excel non è in grado di sapere se la parola successiva alla seconda (Es. Maio in Marco Di Maio) fa parte del cognome o è una parola che non ne fa parte. A questo punto sarebbe più utile sapere come sono composte interamente le stringhe in modo da capire se c’è un delimitatore. Ad esempio, se tutte le stringhe sono nel formato:
              Marco Di Maio – Via Garibaldi 6
              si può far si che estragga tutto ciò che è compreso fino al -. Altrimenti le eccezioni devi gestirle a mano.

              A presto

              • Franco ha detto:

                Ciao, Gianfranco.
                Purtroppo, le parole comprese nelle stringhe sono separate tra loro solo da spazi.
                Siccome i cognomi composti sono pochi ho pensato di unire le parti che li compongono con un trattino basso (es. Di_Maio).
                Ora funziona tutto. Non capisco però come mai il cognome e nome D’Errico Giovanni viene estratto con l’ultima formula da te proposta ma non con quella precedente!
                Grazie del tuo aiuto.

                • gianfranco ha detto:

                  Ottima soluzione per i cognomi composti!

                  Per quanto riguarda il tuo dubbio, il problema non è nell’apostrofo contenuto nel cognome ma nel fatto che la stringa presentava un solo spazio e non due (non vi erano altre parole dopo il nome) e, di conseguenza, la formula non funzionava.

                  • Marco ha detto:

                    Ciao Gianfranco,
                    ho un problema che non ho potuto risolvere con la presenza delle formule presenti in questo forum. MI spiego meglio…ho un elenco con un valore da estrapolare (frazione) che è sempre variabile sia nella posizione tra il testo sia nella frazione stessa che può essere di centesimali o millesimali. Mi servirebbe una formula che mi estrae solo la frazione (*/*, **/**, */**, **/*** ecc.) e che poi dovrebbe essere trasformata in percentuale…mi puoi aiutare???
                    Grazie Marco

                    • gianfranco ha detto:

                      Ciao Marco,
                      ecco la formula che fa per te, estrae le due parti della frazione ed esegue il calcolo… scusa la lunghezza della stessa ma non ho trovato altri modi per far quello che mi chiedi. Sostituisci le occorrenza di A1 con la cella che contiene la tua frase con la frazione. Piccola nota, la frase non deve iniziare o finire con la frazione, io ho considerato solo che la frazione sia in un qualunque punto nel mezzo (es. stringa di prova 1/2 delle frazioni)


                      =--STRINGA.ESTRAI(A1;TROVA(CODICE.CARATT(255);SOSTITUISCI(A1;" ";CODICE.CARATT(255);LUNGHEZZA(STRINGA.ESTRAI(A1;1;TROVA("/";A1)))-LUNGHEZZA(SOSTITUISCI(STRINGA.ESTRAI(A1;1;TROVA("/";A1));" ";""))));TROVA("/";A1)-TROVA(CODICE.CARATT(255);SOSTITUISCI(A1;" ";CODICE.CARATT(255);LUNGHEZZA(STRINGA.ESTRAI(A1;1;TROVA("/";A1)))-LUNGHEZZA(SOSTITUISCI(STRINGA.ESTRAI(A1;1;TROVA("/";A1));" ";"")))))/--STRINGA.ESTRAI(A1;TROVA("/";A1)+1;TROVA(" ";A1;TROVA("/";A1))-TROVA("/";A1))

                    • Marco ha detto:

                      Sei il mio mito 🙂 la formula funziona alla perfezione. grazie.
                      …e se la frazione si dovesse trovare all’inizio o alla fine della mia stringa si sconvolgerebbe di molto la tua formula???

                    • gianfranco ha detto:

                      Ciao Marco,
                      eccoti la versione che permette di estrarre anche la frazione ad inizio o fine del testo. L’importante è che non ci siano 2 frazione 😉

                      Rispetto alla precedente vengono aggiunti uno spazio prima ed uno dopo il valore della cella in fase di elaborazione, così non sono mai ad inizio o fine 😛


                      =--STRINGA.ESTRAI(" " & A1 & " ";TROVA(CODICE.CARATT(255);SOSTITUISCI(" " & A1 & " ";" ";CODICE.CARATT(255);LUNGHEZZA(STRINGA.ESTRAI(" " & A1 & " ";1;TROVA("/";" " & A1 & " ")))-LUNGHEZZA(SOSTITUISCI(STRINGA.ESTRAI(" " & A1 & " ";1;TROVA("/";" " & A1 & " "));" ";""))));TROVA("/";" " & A1 & " ")-TROVA(CODICE.CARATT(255);SOSTITUISCI(" " & A1 & " ";" ";CODICE.CARATT(255);LUNGHEZZA(STRINGA.ESTRAI(" " & A1 & " ";1;TROVA("/";" " & A1 & " ")))-LUNGHEZZA(SOSTITUISCI(STRINGA.ESTRAI(" " & A1 & " ";1;TROVA("/";" " & A1 & " "));" ";"")))))/--STRINGA.ESTRAI(" " & A1 & " ";TROVA("/";" " & A1 & " ")+1;TROVA(" ";" " & A1 & " ";TROVA("/";" " & A1 & " "))-TROVA("/";" " & A1 & " "))

  31. Mario ha detto:

    Ragazzi scusate ho bisogno di un aiuto.
    Devo estrarre da una cella tutto il contenuto dopo l’ultimo “/”
    il numero dei “/” però sono variabili non sono sempre i stessi.
    es http://server_rm.locale/fatture/2521483.tif
    http://server_rm.locale/fatture/ama/2521484.tif
    a me serve: 2521483.tif
    2521484.tif

    • gianfranco ha detto:

      Ciao Mario,
      ponendo che la cella che contiene l’URL sia A1 la formula che ti serve è:


      =STRINGA.ESTRAI(A1;TROVA(CODICE.CARATT(255);SOSTITUISCI(A1;"/";CODICE.CARATT(255);LUNGHEZZA(A1)-LUNGHEZZA(SOSTITUISCI(A1;"/";""))))+1;LUNGHEZZA(A1))

      Fammi sapere se ti funziona correttamente o se hai problemi 🙂

      A presto

      • Mario ha detto:

        Grazie mille funziona alla perfezione.
        Se non chiedo tanto potrei avere una breve spiegazione?
        Non riesco a capire perchè usi Sostituisci.

        grazie mile

        mario

  32. gianfranco ha detto:

    Ciao Mario,
    te la spiego volentieri. Uso la funzione SOSTITUISCI combinata con le altre per trovare la posizione dell’ultimo slash ( / ) nell’URL, quindi lo sostituisco con un carattere che sicuramente è unico usando CODICE.CARATT(255). Di seguito ti mostro i passaggi, in grassetto ciò che cambia rispetto al passaggio successivo, spero che così ti sia più chiaro, uso come esempio “http://server_rm.locale/fatture/2521483.tif”


    =STRINGA.ESTRAI(A1;TROVA(CODICE.CARATT(255);SOSTITUISCI(A1;"/";CODICE.CARATT(255);LUNGHEZZA(A1)-LUNGHEZZA(SOSTITUISCI(A1;"/";""))))+1;LUNGHEZZA(A1))

    =STRINGA.ESTRAI("http://server_rm.locale/fatture/2521483.tif"
    ;TROVA(CODICE.CARATT(255);SOSTITUISCI(A1;"/";CODICE.CARATT(255);LUNGHEZZA(A1)-LUNGHEZZA(SOSTITUISCI(A1;"/";""))))+1;LUNGHEZZA(A1))

    =STRINGA.ESTRAI("http://server_rm.locale/fatture/2521483.tif";TROVA("ÿ";SOSTITUISCI(A1;"/";CODICE.CARATT(255);LUNGHEZZA(A1)-LUNGHEZZA(SOSTITUISCI(A1;"/";""))))+1;LUNGHEZZA(A1))

    =STRINGA.ESTRAI("http://server_rm.locale/fatture/2521483.tif";TROVA("ÿ";SOSTITUISCI(A1;"/";CODICE.CARATT(255);LUNGHEZZA(A1)-LUNGHEZZA(SOSTITUISCI(A1;"/";""))))+1;LUNGHEZZA(A1))

    SOSTITUISCI chiede come ultima opzione quale dei vari “/” sostituire con “ÿ”, visto che il numero è variabile uso un trucco, calcolo la lunghezza della stringa e sottraggo la lunghezza della stessa stringa in cui ho sostituito il carattere “/” con nulla “”, di conseguenza ho il numero degli slash presenti


    =STRINGA.ESTRAI("http://server_rm.locale/fatture/2521483.tif";TROVA("ÿ";SOSTITUISCI("http://server_rm.locale/fatture/2521483.tif";"/";CODICE.CARATT(255);LUNGHEZZA(A1)-LUNGHEZZA(SOSTITUISCI(A1;"/";""))))+1;LUNGHEZZA(A1))

    =STRINGA.ESTRAI("http://server_rm.locale/fatture/2521483.tif";TROVA("ÿ";SOSTITUISCI("http://server_rm.locale/fatture/2521483.tif";"/";"ÿ";LUNGHEZZA(A1)-LUNGHEZZA(SOSTITUISCI(A1;"/";""))))+1;LUNGHEZZA(A1))

    =STRINGA.ESTRAI("http://server_rm.locale/fatture/2521483.tif";TROVA("ÿ";SOSTITUISCI("http://server_rm.locale/fatture/2521483.tif";"/";"ÿ";LUNGHEZZA("http://server_rm.locale/fatture/2521483.tif")-LUNGHEZZA(SOSTITUISCI(A1;"/";""))))+1;LUNGHEZZA(A1))

    =STRINGA.ESTRAI("http://server_rm.locale/fatture/2521483.tif";TROVA("ÿ";SOSTITUISCI("http://server_rm.locale/fatture/2521483.tif";"/";"ÿ";43-LUNGHEZZA(SOSTITUISCI(A1;"/";""))))+1;LUNGHEZZA(A1))

    =STRINGA.ESTRAI("http://server_rm.locale/fatture/2521483.tif";TROVA("ÿ";SOSTITUISCI("http://server_rm.locale/fatture/2521483.tif";"/";"ÿ";43-LUNGHEZZA(SOSTITUISCI("http://server_rm.locale/fatture/2521483.tif";"/";""))))+1;LUNGHEZZA(A1))

    =STRINGA.ESTRAI("http://server_rm.locale/fatture/2521483.tif";TROVA("ÿ";SOSTITUISCI("http://server_rm.locale/fatture/2521483.tif";"/";"ÿ";43-LUNGHEZZA("http:server_rm.localefatture2521483.tif")))+1;LUNGHEZZA(A1))

    =STRINGA.ESTRAI("http://server_rm.locale/fatture/2521483.tif";TROVA("ÿ";SOSTITUISCI("http://server_rm.locale/fatture/2521483.tif";"/";"ÿ";43-39))+1;LUNGHEZZA(A1))

    =STRINGA.ESTRAI("http://server_rm.locale/fatture/2521483.tif";TROVA("ÿ";SOSTITUISCI("http://server_rm.locale/fatture/2521483.tif";"/";"ÿ";4))+1;LUNGHEZZA(A1))

    Ora so che devo sostituire il quarto slash con “ÿ”, questo mi servirà per trovare la posizione di “ÿ” nella stringa identificando la posizione di quello che era l’ultimo “/”


    =STRINGA.ESTRAI("http://server_rm.locale/fatture/2521483.tif";TROVA("ÿ";"http://server_rm.locale/fatture"ÿ"2521483.tif")+1;LUNGHEZZA(A1))

    =STRINGA.ESTRAI("http://server_rm.locale/fatture/2521483.tif";TROVA("ÿ";"http://server_rm.locale/fatture"ÿ"2521483.tif")+1;LUNGHEZZA(A1))

    =STRINGA.ESTRAI("http://server_rm.locale/fatture/2521483.tif";32+1;LUNGHEZZA(A1))

    Ora so che STRINGA.ESTRAI dovrà iniziale l’estrazione dalla posizione 32 (ex “/”) + 1 carattere (quindi 33) altrimenti mi estrae anche il “/”, infine, visto che non so il numero di caratteri, gli dico di estrarre tanti caratteri quanti sono quelli della lunghezza originale, dato che sono di meno verrà estratto tutto fino alla fine


    =STRINGA.ESTRAI("http://server_rm.locale/fatture/2521483.tif";33;LUNGHEZZA(A1))

    =STRINGA.ESTRAI("http://server_rm.locale/fatture/2521483.tif";33;LUNGHEZZA("http://server_rm.locale/fatture/2521483.tif"))

    =STRINGA.ESTRAI("http://server_rm.locale/fatture/2521483.tif";33;44)

    Quindi, riassumendo, estrae dalla stringa 44 caratteri partendo dalla posizione 33. Spero che ti sia chiara come spiegazione, altrimenti chiedi pure chiarimenti 🙂

    A presto

  33. Marco ha detto:

    Buongiorno,
    io devo contare dei caratteri nelle celle, ma devo escludere tutti i caratteri compresi tra i simboli (inclusi i simboli). Ce ne potrebbero essere più di una serie, per esempio così:

    Vai dal tuo negozio per vedere i vari tipi di prodotto.

    Dovrei, quindi, contare il numero di caratteri totale escludendo e .

    Come posso fare?

    Grazie infinite!

    M

    • Marco ha detto:

      Scusate, ma il sistema ha tagliato i codici.

      Buongiorno,
      io devo contare dei caratteri nelle celle, ma devo escludere tutti i caratteri compresi tra i simboli “” (inclusi i simboli). NB: le virgolette non c’entrano. Ce ne potrebbero essere più di una serie, per esempio così:

      Vai dal tuo “”negozio”” per vedere i vari tipi di prodotti.

      Quindi devo solo contare i caratteri “Vai dal tuo negozio per vedere i vari tipi di prodotti”.

      Come fare?

      Grazie

      M

      • gianfranco ha detto:

        Ciao Marco,
        devi usare SOSTITUISCI e LUNGHEZZA concatenando i primi per ogni simbolo che vuoi eliminare, ad esempio, per eliminare le sole virgolette:


        =LUNGHEZZA(SOSTITUISCI(A1;"""";""))

        Per eliminare le virgolette ed i punti:


        =LUNGHEZZA(SOSTITUISCI(SOSTITUISCI(A1;".";"");"""";""))

        per eliminare virgolette, punti e trattini


        =LUNGHEZZA(SOSTITUISCI(SOSTITUISCI(SOSTITUISCI(A1;"-";"");".";"");"""";""))

        e così via.

        Spero sia quello che cerchi, a presto!

  34. TURBOCRIS ha detto:

    Ciao Gianfranco
    ho questa necessità: in una cella vorrei avere la possibilità di selezionere da elenco a tendina (Monia, Cristiano, Ameriga…) e nello stesso tempo, a selezione avvenuta, far comparire nella cella solo l’iniziale del nome. Puoi aiutarmi?
    grazie

    • TURBOCRIS ha detto:

      ah…l’elenco a tendina si trova nello stesso file ma nel foglio successivo!

      • gianfranco ha detto:

        Ciao,
        purtroppo non si può, il valore della tendina è strettamente legato al suo contenuto quindi non hai la possibilità di mostrare solo una parte di esso, però posso offrirti una soluzione alternativa, devi aggiungere una colonna a destra di quella dove hai la tendina.

        Poniamo che la tendina sia in A1, in B1 scrivi =SINISTRA(A1;1) in modo che nella cella venga scritto M per Marco, C per Cristiano e così via. Poi nella cella A1 clicchi con il tasto destro, scegli formato cella quindi dall’elenco a sinistra scegli “Personalizzato”. Nel campo a destra chiamato “Tipo” scrivi 3 volte punto e virgola (;;;) in questo modo il valore della cella verrà nascosto dopo la selezione.

        A questo punto riduci la largezza di A1 in modo che rimanga molto piccola quanto basta per cliccarci ed ottenere il menu a tendina.

        Spero che possa andare bene come escamotage, non si può fare altrimenti

  35. TURBOCRIS ha detto:

    ti ringrazio…in realtà cercavo di evitare la doppia colonna
    sei stato gentilissimo

    • gianfranco ha detto:

      Purtroppo in alcuni casi non si può fare altrimenti… anche io tante volte avrei voluto eliminare colonne di troppo per risparmiare spazio :-)… magari con Excel 2050 ci arrivano eheheh

  36. TURBOCRIS ha detto:

    ho creato 2 colonne nel foglio 2 (dove ho creato l’elenco) e ho tentato di inserire la formula =SE direttamente nel campo origine dell’elenco su Convalida dati in modo da avere in automatico il dato sulla cella del foglio 1, ma non sono riuscito nemmeno così… 🙁

    • gianfranco ha detto:

      Purtroppo non è possibile, per 2 motivi. Il primo è che un dato inserito con una formula se diverso da uno di quelli inseriti nell’elenco automaticamente viola la convalida, il secondo è che selezionando un valore dalla tendina quest’ultimo sostituisce eventuali formule presenti

  37. TURBOCRIS ha detto:

    ok grazie mille lo stesso

  38. chiara ha detto:

    Ciao!
    ho un questito: io ho una cella (formato testo) che contiene solo dei + e dei – senza spazi nè altro.
    Avrei bisogno di mettere ogni simbolo in una sua colonna.
    Con il comando “testo in colonne” non funziona (non essendo il testo diviso nè da spazi, nè da virgole nè da altro).
    quindi mi chiedo: c’è un modo per inserire gli spazi (non a mano, sono 53mila righe) o di dividerli direttamente in diverse colonne?

    grazie

    • gianfranco ha detto:

      Ciao Chiara,
      esiste una formula che fa al caso tuo basata su STRINGA.ESTRAI, mettiamo che tu parti dalla cella B1 e che la tua cella di riferimento con i + ed i – sia A1 la formula che ti serve è:

      =STRINGA.ESTRAI($A1;RIF.COLONNA()-1;1)

      dato che RIF.COLONNA viene usato per determinare il carattere da estrarre (es B = 2) devi sottrarre 1 perché diventi 1 (ovvero il primo carattere della stringa), se parti da C dovrai sostituire il -1 con -2, partendo dalla colonna D -3 e così via, trascinando la formula si aggiusta da se.

      Trascina quindi la formula verso destra per tante colonne quanti sono i + e -, seleziona quindi il blocco di celle e trascina verso il basso per le 53000 righe 🙂

      Sviluppo della formula ponendo che in A1 ci sia “+–+-” e che la formula sia in B1, in grassetto i cambiamenti


      =STRINGA.ESTRAI($A1;RIF.COLONNA()-1;1)

      =STRINGA.ESTRAI("+--+-";RIF.COLONNA()-1;1)

      =STRINGA.ESTRAI("+--+-";2-1;1)

      =STRINGA.ESTRAI("+--+-";1;1)

      Risultato +

      Spero sia semplice come spiegazione 🙂

      • Cataldo ha detto:

        [00273848] – FULVIO XXXXXXXXX – 03xxxxxxxx// – VIA MILANO 28, CANTELLO (VA) –
        Ciao Gianfranco ho letto l’aiuto che dai a chi te lo chiede e mi sono ispirato anche io a farlo.
        Ho esportato da calendar di google dei nominativi in excel come l’esempio di sopra,per motivi organizzativi ho la necessita di estrarre il paese in una colonna e la provincia in un’altra colonna.
        Ti faccio presente che nella stringa a volte ci sono due virgole ma l’ultima è sempre quella del numero della via. Ho circa 2000 stringhe da sistemare e i nominativi sono di paesi diversi e provincie diverse voglio dargli un ordine diverso.
        Grazie per l’aiuto e la disponibilità

        • gianfranco ha detto:

          Ciao Cataldo,
          ecco le due formule che ti servono, do per assodato il formato che mi hai proposto che finisce sempre con (XX) -, se non dovesse essere così dimmelo che trovo un’altra soluzione.

          La formula per estrarre il paese è la seguente e funziona indipendentemente dal numero di virgole, sperando invece che le parentesi siano presenti solo alla fine:


          =STRINGA.ESTRAI(A1;TROVA(CODICE.CARATT(255);SOSTITUISCI(A1;",";CODICE.CARATT(255);LUNGHEZZA(A1)-LUNGHEZZA(SOSTITUISCI(A1;",";""))))+2;TROVA(")";A1)-TROVA(CODICE.CARATT(255);SOSTITUISCI(A1;",";CODICE.CARATT(255);LUNGHEZZA(A1)-LUNGHEZZA(SOSTITUISCI(A1;",";""))))-6)

          Se invece ci sono più parentesi nel testo

          =STRINGA.ESTRAI(A1;TROVA(CODICE.CARATT(255);SOSTITUISCI(A1;",";CODICE.CARATT(255);LUNGHEZZA(A1)-LUNGHEZZA(SOSTITUISCI(A1;",";""))))+2;LUNGHEZZA(STRINGA.ESTRAI(A1;TROVA(CODICE.CARATT(255);SOSTITUISCI(A1;",";CODICE.CARATT(255);LUNGHEZZA(A1)-LUNGHEZZA(SOSTITUISCI(A1;",";""))))+2;LUNGHEZZA(A1)))-7)

          Per la provincia invece è più semplice essendo sempre alla fine del testo e con una lunghezza fissa:

          =STRINGA.ESTRAI(DESTRA(A1;6);2;2)

          Fammi sapere se funziona o se hai qualche problema 🙂

  39. turbocris ha detto:

    Ciao Gianfranco
    ho un nuovo quesito:
    ho codificato dei modelli da 1 a 999 con un codice, poi materiali da 1 a 99 e infine delle misure da 1 a 999; il risultato è un codice prodotto così composto 012 34 567 suddiviso in 3 celle che identifica il prodotto.
    Ora viene il bello: in un foglio ho riportato questi tre elenchi, in un altro ho impostato un modello per preventivi dove andrò ad inserire il codice in una (se possibile) o tre celle; dall’inserimento di questo codice vorrei far apparire, nella cella a destra, le tre nomenclature che corrispondono ai codici negli elenchi creati.
    Inoltre le prime tre cifre del codice sono suddivise ulteriormente in famiglie ( da 1 a 99, da 100 a 199, da 200 a 299 e così via) quindi per ogni famiglia dovrei far apparire una dicitura piuttosto che un’altra.
    Esempio:
    codice 116 14 075 dove 116 sta per la famiglia “Quadrati” “modello 116” dove 14 sta per il materiale “ferro 15/10” e 075 sta per la misura “cm 075” ; in sostanza inserendo il codice 116 14 075 nella cella di destra dovrei avere la seguente dicitura: “Quadrati modello 116 ferro 15/10 cm 075”.
    Come dicevo le prime tre cifre sono suddivise in 10 famiglie (di cento in cento) e a seconda della centinai di appartenenza mi dovrebbe apparire una dicitura diversa: da 1 a 99 = “retto”, da 100 a 199 = “Quadrati”, da 200 a 299 = “Tondi” e così via…….sempre se possibile.

    Ti ringrazio anticipatamente

    • gianfranco ha detto:

      Ciao Cristiano,
      si può fare benissimo l’inserimento in una singola cella suddividendo le parti del codice con uno spazio. Fatto questo diventa abbastanza semplice. Partiamo con il come ottenere i 3 codici

      Prima parte del codice


      =STRINGA.ESTRAI(A1;1;TROVA(" ";A1)-1)

      Seconda parte, questa è un po’ più difficile

      =STRINGA.ESTRAI(A1;TROVA(CODICE.CARATT(254);SOSTITUISCI(A1;" ";CODICE.CARATT(254);1))+1;TROVA(CODICE.CARATT(255);SOSTITUISCI(A1;" ";CODICE.CARATT(255);2))-TROVA(CODICE.CARATT(254);SOSTITUISCI(A1;" ";CODICE.CARATT(254);1))-1)

      Terza parte

      =STRINGA.ESTRAI(A1;TROVA(CODICE.CARATT(254);SOSTITUISCI(A1;" ";CODICE.CARATT(254);2))+1;LUNGHEZZA(A1))

      Ora si tratta di usare il CERCA.VERT sulle tue tabella. Il mio primo consiglio è quello di inserire anche le forme nelle tabelle altrimenti dovresti inserire una marea di SE. Poniamo che le tue tabelle siano in un foglio chiamato DB

      In DB avrai le colonne A:C per la prima parte del codice (mettendo in B la forma)
      D:E per la seconda parte
      F:G per la terza

      Presumo che i codici siano in celle formattate come numeri e non come testo, se sono come testo rimuovi i —

      La formula completa sarà

      =CERCA.VERT(--STRINGA.ESTRAI(A1;1;TROVA(" ";A1)-1);DB!A:C;2;0) & " " & CERCA.VERT(--STRINGA.ESTRAI(A1;1;TROVA(" ";A1)-1);DB!A:C;3;0) & " " &CERCA.VERT(--STRINGA.ESTRAI(A1;TROVA(CODICE.CARATT(254);SOSTITUISCI(A1;" ";CODICE.CARATT(254);1))+1;TROVA(CODICE.CARATT(255);SOSTITUISCI(A1;" ";CODICE.CARATT(255);2))-TROVA(CODICE.CARATT(254);SOSTITUISCI(A1;" ";CODICE.CARATT(254);1))-1);DB!D:E;2;0) & " " & CERCA.VERT(--STRINGA.ESTRAI(A1;TROVA(CODICE.CARATT(254);SOSTITUISCI(A1;" ";CODICE.CARATT(254);2))+1;LUNGHEZZA(A1));DB!F:G;2;0)

      Non è proprio semplicissima ma fa quello che chiedi… se potessi vedere il file sarei più preciso 🙂

      NOTA:
      Se il file è a tuo uso e consumo e non devi distribuirlo puoi installare il mio add in che ti semplifica la vita, la formula diventerebbe


      =CERCA.VERT(--ESTRAI.CAMPO(A1;" ";1);DB!A:C;2;0) & " " & CERCA.VERT(--ESTRAI.CAMPO(A1;" ";1);DB!A:C;3;0) & " " & CERCA.VERT(--ESTRAI.CAMPO(A1;" ";2);DB!D:E;2;0) & " " & CERCA.VERT(--ESTRAI.CAMPO(A1;" ";3);DB!F:G;2;0)

      Notevolmente più semplice vero? 🙂

      • TURBOCRIS ha detto:

        Ciao Gianfranco
        questi due giorni ero fuori sede, ma sono tornato al lavoro.
        In effetti ho provato, ma non è semplice (x uno poco esperto come me)
        Se sapessi come fare ti girerei il file…potresti aiutarmi?
        Grazie se mpre gentilissimo

  40. Silvia ha detto:

    Ciao Io dovrei estrarre
    RV_ad_Ciao_ti_
    RP_od_Silvia_dhjj4h6l7

    Io dovrei estrarre Ciao e Silvia, che sono sempre nella stessa posizione e preceduti da un trattino e concludono con un trattino. Non posso indicare il numero dei caratteri perchè nel mio file il nome cambia sempre.
    Potete aiutarmi???
    Grazie
    Silvia

  41. Silvia ha detto:

    Ciao Io dovrei estrarre
    RV_ad_Ciao_ti_
    RP_od_Silvia_dhjj4h6l7

    Io dovrei estrarre Ciao e Silvia, che sono sempre nella stessa posizione e preceduti da un trattino e concludono con un trattino. Non posso indicare il numero dei caratteri perchè nel mio file il nome cambia sempre.
    Potete aiutarmi???
    Grazie
    Silvia

    • gianfranco ha detto:

      Ciao Silvia (estrazione fatta ehehe),
      questa volta è semplice, se la struttura è sempre la stessa hai già la maggior parte delle informazioni, sai che devi estrarre dal settimo carattere e devi trovare solo la lunghezza. Per trovarla puoi usare la funzione TROVA per cercare il trattino indicando come inizio il settimo carattere e quindi sottraendo 7 al risultato, ovvero


      =STRINGA.ESTRAI(A1;7;TROVA("_";A1;7)-7)

      Semplice no? 🙂

      • turbocris ha detto:

        Ciao Gianfranco
        Ho un file nel quale registro le commesse che entrano in azienda dove inserisco una commessa in una riga e per ogni colonna inserisco dei dati riferiti alla commessa:
        in A1 la data di arrivo, in B1 il numero di commessa, in C1 il nome del cliente, in D1 l’ubicazione del cantiere e così via;
        poi nella riga sotto inserisco un’altra commessa e inserisco i dati a seconda della colonna come nella riga superiore.

        Fatto questo uso il programma per ritrovare i dati più disparati (tecnici, commerciali, amministrativi etc..) e per fare questo seleziono tutte le righe e tutte le colonne e vado ad ordinare a seconda del dato che cerco; la MIA PAURA è che un giorno possa sbagliarmi a selezionare e se dimentico anche una sola colonna mi sfalserebbe tutti i dati, cioè ordinerei tutte le colonne selezionate come richiesto ma la colonna che ho dimenticato rimane con l’ordinamento vecchio e se poi non mi accorgo e salvo sono cavoli amari.

        Vorrei poter “collegare” tutti i dati di una riga tra loro in modo tale che se si verifica quanto sopra descritto comunque la riga non si scompone e l’ordinamento comprende sempre tutte le colonne per ogni riga a prescindere se le seleziono tutte o meno. Inoltre così facendo potrei ordinare direttamente da una singola colonna invece che dover selezionare tutto.

        • gianfranco ha detto:

          Ciao,
          ti ho già inviato la risposta via email :-)… a breve scrivo un articolo per spiegare come usare l’ordinamento, mettero il link in questo commento

  42. Jack ha detto:

    Ciao,
    provo anche io ad approfittare della tua competenza e gentilezza :). ho cercato nelle risposte già date, ma non ho trovato quello che mi serve, spero di non essere ripetitivo:).

    Ho due colonne con lettere e numeri, e con la funzione “cerca”, ho bisogno che se in una cella è presente un valore della prima colonna, mi dia come risultato quello della cella accanto.

    Il valore della cella che cerco è estratto da una parola con la funzione “stringa.estrai”

    Il problema è che, se il carattere estratto è un numero, mi da in risposta #N/D, dato che lo estrae come testo, e anche formattando la colonna con solo formato testo, non lo trova cmq…

    spero di essere stato chiaro, e spero tu possa aiutarmi!

    Grazie e buona giornata!

  43. Lorenzo ha detto:

    Ciao, per caso sai come fare per suddividere la stringa dopo un “new line”? cioè dopo un a capo?
    In sostanza quello che nel linguaggio di programmazione di solito si scrive come \n in excel come si scrive?

    Dalla cella:
    Pippo
    Pluto

    dovrei estrarre:
    Pippo

  44. danilo ha detto:

    Ciaio
    avrei bisogno di una informazione, in una cella m11 vorrei sommare lettere e numeri contenenuti in una colonna d2 : d32 . Esempio 4CS dove S è uguale a 8 . Il totale dovrebbe venire 12. I numeri sono variabili da 1 a 70.
    La condizione non è che tutte le celle nell’intervallo di interesse contengano un valore numerico seguito dalla lettera S bensì la lettera e i numeri si trovano sparsi.
    Preferirei non utilizzare vba in quanto dovrò utilizzare il file in excel mobile.

    Grazie.

    • gianfranco ha detto:

      Ciao Danilo,
      innanzitutto scusa per il ritardo ma sono tornato attivolo solo oggi. Per quanto riguarda la tua domanda, hai un elenco che assegna ad ogni lettera il suo lavoro? Oppure c’è un modo che hai usato per calcolare il valore delle lettere?

      Grazie

  45. erica ha detto:

    Ciao… sono bloccata 🙂
    Ma se ho un elenco lunghissimo di mail e volessi eliminare tutte quelle in cui compare gmail? come faccio?

  46. Marco ha detto:

    Ciao Gianfranco, io avrei necessità di estrarre da una stringa tutte le parole intere fino al limite di 40 caratteri e poi in un altra cella tutte le parole rimanenti.
    ES: SAMSUNG TV LED 40″ UE40JU6400 ULTRAHD SMART-TV
    Cella 1: SAMSUNG TV LED 40″ UE40JU6400 ULTRAHD
    Cella 2: SMART-TV

    Grazie
    Marco

    • gianfranco ha detto:

      Ciao Marco,
      ecco le due formule che ti permettono di fare quello che chiedi, poniamo che la cella che contiene la tua stringa sia A1, la prima formula che ti prende i primi 40 caratteri andrà in B1 e sarà


      =STRINGA.ESTRAI(A1;1;RICERCA(CODICE.CARATT(254);SOSTITUISCI(SINISTRA(A1;40);" ";CODICE.CARATT(254);40-(LUNGHEZZA(SOSTITUISCI(SINISTRA(A1;40);" ";""))))))

      La seconda andrà in C1 e sarà molto più semplice


      =ANNULLA.SPAZI(SOSTITUISCI(A1;B1;""))

      Tieni presente che nella prima formula se c’è uno spazio alla fine viene mantenuto, se vuoi eliminarlo ti basta racchiudere la formula nella funzione =ANNULLA.SPAZI(). Nella seconda gli spazi iniziali e finali vengono eliminati automaticamente

      • Marco ha detto:

        Grazie 1000,
        mi hai risolto un bel problema:-). Ho fatto solo una piccola modifica in quanto mi sono dimenticato di dire che la stringa può avere anche meno di 40 caratteri, e le formule davano errore in quel caso. L’ho modificata in:

        =SE(LUNGHEZZA(A1)<40;A1;STRINGA.ESTRAI(A1;1;RICERCA(CODICE.CARATT(254);SOSTITUISCI(SINISTRA(A1;40);" ";CODICE.CARATT(254);40-(LUNGHEZZA(SOSTITUISCI(SINISTRA(A1;40);" ";"")))))))

        La seconda formula di consenguenza non da più errore.
        Grazie di nuovo.
        Marco.

        • gianfranco ha detto:

          Hai fatto benissimo, in effetti non avevo considerato la lunghezza complessiva ma mi ero incentrato su come risolvere il problema delle parole spezzate 🙂

  47. Alberto ha detto:

    Ho letto tutte le varie richieste e provato ad applicare le formule al mio caso, ma purtroppo senza successo.
    Mi spiego meglio.
    Ho circa un migliaio di celle contenenti nomi, numeri di telefono e mail.
    Hanno tutte un diverso numero di caratteri, spazi e virgole, ma iniziano tutte con nome e cognome, poi telefono e infine mail.
    Es:
    Mario Rossi tel 123145689 mail asjdads@asds.com
    Bianchi Antonio Stefano tel 123154654 mail sssss@asd.it

    Ora a me servirebbe eliminare tutto ciò che c’è da “TEL” compreso in poi.

    Qualche anima buona può aiutarmi.
    Grazie in anticipo.

    • gianfranco ha detto:

      Ciao Alberto e grazie per il commento,
      per fare quello che chiedi ti basta inserire in una cella la seguente formula (poniamo che la tua stringa sia in A1)


      =ANNULLA.SPAZI(SINISTRA(A1;TROVA(" tel";A1)))

      Se invece vuoi suddividere i dati in diverse colonne puoi usare queste 3 formule (una per colonna)

      Nome e cognome

      =ANNULLA.SPAZI(SINISTRA(A1;TROVA(" tel";A1)))

      Telefono

      =ANNULLA.SPAZI(STRINGA.ESTRAI(A1;TROVA("tel ";A1)+4;TROVA(" mail";A1)-TROVA("tel ";A1)-4))

      Email

      =STRINGA.ESTRAI(A1;TROVA("mail ";A1)+5;LUNGHEZZA(A1))

      Spero di essere riuscito ad aiutari 🙂

      A presto

      • Alberto ha detto:

        Ciao Gianfranco, grazie per la risposta velocissima.
        Funziona tutto perfettamente.
        Ora si pone un problema. I valori non sempre hanno la voce TEL (ho erroneamente detto che erano tutti uguali) e quando ciò avviene la formula giustamente non funziona.
        Ora dovendo sostituire le celle originali con il risultato della formula ho il problema che se copio tutto così come è ottengo che, dove la voce TEL non è presente io vado a cancellare tutto.
        E’ possibile fare in modo che, dove la voce TEL non è presente, di come risultato comunque il nome e cognome?
        Ho dato uno sguardo alla funzione SE ma non ha funzionato.
        Grazie ancora per la disponibilità

        • gianfranco ha detto:

          Ciao Alberto,
          Giusto per capire meglio, può mancare la parola ma esserci il numero o mancare il numero ed esserci solo la mail?

          • Alberto ha detto:

            Può mancare tutto ed esserci solo il nome già pronto.
            Es.

            Mario Rossi tel 123145689 mail moc.sdsa@sdadjsa
            Verdi Luigi
            Bianchi Antonio Stefano tel 123154654 mail ti.dsa@sssss

            Nella cella A1 e A3 funziona tutto, nella A2 riporta l’errore.

            • Alberto ha detto:

              Risolto semplicemente facendo un copia incolla con funzione “salta le celle vuote”… sono proprio acerbo di excel 🙂

            • gianfranco ha detto:

              Ciao Alberto,
              puoi modificare la formula in questo modo, se trova TEL esegue la formula, altrimenti restituisce l’intero valore della cella


              =SE(VAL.ERR(RICERCA("TEL";A1));A1;ANNULLA.SPAZI(SINISTRA(A1;TROVA(" tel";A1))))

  48. Gennaro ha detto:

    Ciao Gianfranco ho letto alcuni tuoi post e mi deve complimentare davvero molto con te x la disponibilità e la competenza che offri a tutti. Ora se non è un problema volevo chiederti la disponibilità a risolvere un quesito anche per me.
    Ho una lista contenente varie notizie da cui voglio estrarre solamente il sito internet.
    Es Rossi Paolo 3330000000 Roma http:\\www.google.it
    Paolo Rossi 3333556788 Livorno http:\\www.libero.it
    etc..
    quello che voglio ottenere è
    http:\\www.google.it
    http:\\www.libero.it
    etcc….
    Grazie moltissimo in anticipo

    • gianfranco ha detto:

      Ciao Gennaro,
      se il formato delle celle è sempre quello che mi hai indicato puoi usare questa formula che trova http ed estrae tutto da quel punto fino alla fine della stringa


      =STRINGA.ESTRAI(A1;RICERCA("http:";A1);LUNGHEZZA(A1))

  49. Renato ha detto:

    Ciao Gianfranco potresti aiutarmi?
    Nella colonna A ho :
    POSTE ITALIANE SPA (PIVA 01114601006) VIA CARNIA LIBERA 1944 39 – 33028 TOLOMEZZO (UD)
    POSTE ITALIANE SPA (PIVA 01114601006) VIA DEL CANNONE, SNC. 87027 PAOLA (CS)
    POSTE ITALIANE SPA (PIVA 01114601006) VIA LUIGI D’AMATO, 15/17 86100 CAMPOBASSO (CB)
    POSTE ITALIANE SPA (PIVA 01114601006) PIAZZA LIBER PARADISUS, 19B, 40129 BOLOGNA (BO)
    BANCA POPOLARE DI VICENZA P.IVA 00204010243. VIALE ITALIA 1, 25064 GUSSAGO (BS)

    Devo isolare nella colonna B la Rag.Sociale (poste italiane spa), nella colonna C la P.iva, nella colonna D l’indirizzo, nella colonna E il CAP, nella F la località, nella G la provincia.

    Sono riuscito solo ad isolare la provincia.

    Grazie in anticipo e complimenti!!

    • gianfranco ha detto:

      Ciao Renato,
      innanzitutto grazie per i complimenti! Ho dato una rapida occhiata perché non sono davanti ad un pc al momento ma con il cellulare. Estrarre il nome non è un problema perché ho la prima parentesi come riferimento. Stesso dicasi per la p. iva.

      Nell’ultimo esempio però ho un problema perché non ci sono parentesi o altri simboli per identificare il punto in cui dividere

      Stasera guardo meglio e ti aggiorno

  50. Stefano ha detto:

    Ciao, grazie ai commenti e alle tue risposte ho risolto un problema, ma ora mi trovo davanti a questa situazione: devo creare una formula per ripulire una cella excell da caratteri html compresi tra . Ad esempio:
    torno a casa.
    Ti aspettiamo, il pranzo è pronto
    Ho chiamato alle ore quattro

    Quale formula mi consigli di applicare?
    Grazie mille

    • gianfranco ha detto:

      Ciao Stefano,
      se non ho capito male tu hai delle stringhe di tipo

      <p>Ti aspettiamo, il pranzo è pronto</p>

      e vuoi trasformarle in

      Ti aspettiamo, il pranzo è pronto

      La formula che puoi usare è un SOSTITUISCI concatenato, del tipo


      =SOSTITUISCI(SOSTITUISCI(A1;"<p>";"");"</p>";"")

      Questo funziona per il tag P, se devi estrarre stringhe da tag diversi devi cambiare la formula o usare le macro creando una funzione che usi le espressioni regolari (fammi sapere se è il caso, così magari te la posso scrivere o aiutarti a scriverla)

      A presto

  51. Stefano ha detto:

    Ciao,
    per il post precedente in cui l’editor ha omesso i caratteri “”, ho provato con la seguente funzione, ma toglie solo i caratteri “”

    =SOSTITUISCI(AB5;””;””)&SOSTITUISCI(AB5;””;” “)

    Potresti aiutarmi?

    Grazie

  52. Andrea ha detto:

    Ciao Potete aiutarmi ?

    questo e il testo che ho a disposizione:
    2-900-FLOWTREA.CUC-A (FOMBS.O)
    oppure
    UJNDYTREA.CJDJ-A (FOHNUY.M)

    io devo estrarre dalla parte sinistra tutta la frase all’interno della parentesi
    cioè FOMBS.O e FOHNUY.M

    come devo fare ?

    • gianfranco ha detto:

      Buongiorno Andrea,
      la formula che ti serve è la seguente


      =STRINGA.ESTRAI(A1;TROVA("(";A1)+1;TROVA(")";A1)-1-TROVA("(";A1))

      Prova a testarla perché l’ho scritta dal telefono visto che sono in giro, dovrebbe funzionare comunque, attendo comunque un riscontro

      Buona giornata

      • Andrea ha detto:

        GRANDE GAINFRANCO SEI IL TOP !!!!
        per fortuna che ci sono delle persone come te che aiutano…e da ammirare !!!

      • Andrea ha detto:

        Pero adesso Mi serve

        questo e il testo che ho a disposizione:
        2-900-FLOWTREA.CUC-A (FOMBS.O)
        oppure
        UJNDYTREA.CJDJ-A (FOHNUY.M)

        io devo estrarre dalla parte sinistra tutta la frase all’interno della parentesi
        senza la .O .cioè FOMBS e FOHNUY
        ti ricordo che il finale .O può variare lettera e7o numero

        quindi mi serve solo la sigla all’interno della parentesi senza il . e la parte dopo il .

        come devo fare ?

        • gianfranco ha detto:

          Ciao Andrea,
          innanzitutto grazie per il riscontro.

          Sempre da verificare, per estrarre la prima parte (sempre partendo dalla stringa intera)


          =STRINGA.ESTRAI(A1;TROVA("(";A1)+1;TROVA(".";A1;TROVA("(";A1))-1-TROVA("(";A1))

          e per estrarre la seconda parte


          =STRINGA.ESTRAI(A1;TROVA(".";A1;TROVA("(";A1))+1;1)

          oppure, in alternativa, puoi usare come stringa di partenza il risultato della formula che ti ho dato prima, in questo caso (poniamo sia in B1) avrai


          =SINISTRA(B1;LUNGHEZZA(B1)-2)

          e pe rla seconda parte


          =DESTRA(B1;1)

          Le formule funzionano se il carattere dopo il punto è sempre e solo 1.

          • Andrea ha detto:

            FANTASTICO E CORRETTO !

            Ascolta dove posso apprendere dei corsi per imparare ad usare excel ?

  53. BenedettaC ha detto:

    ciao buongiorno,
    avrei un quesito da porti.
    avrei bisogno di confrontare i dati di due colonne (A e B) ed il risultato andrà in una terza colonna (C).
    Se confronto un dato della colonna B con un della colonna A, il risultato va bene (però mi toccherebbe riscrivere la formula per ogni riga 🙁 ); ma se confronto un dato della colonna B e tutti i dati della colonna A mi risulta #NOME
    esiste una funzione specifica?
    io ho utilizzato la formula IF:

    =if((–STRINGA.ESTRAI(D8;9;LUNGHEZZA(D8)))=(A2:A138);D8;” “) uno a molti NON FUNZIONA

    =SE(–STRINGA.ESTRAI(D8;9;LUNGHEZZA(D8))= (A2);D8;” “) uno a uno OK, VA BENE HO RISULTATO SPERATO

    spero di essere stata chiara
    grazie
    Benedetta

  54. fabrizio ha detto:

    ciao a me servirebbe un aiuto,
    dovrei estrarre da questa stringa I0007108.7.OSB105075 S1C E2E ENG &TECHNICAL MONITORING
    1) I0007108.7
    2) OSB105075

    come posso fare

    • gianfranco ha detto:

      Ciao Fabrizio,
      dando per assunto che i codici contengano sempre con 2 punti e che ci sia uno spazio fra i codici e la descrizione le 2 formule che ti servono sono, per la prima parte:


      =STRINGA.ESTRAI(A1;1;TROVA(CODICE.CARATT(255);SOSTITUISCI(A1;".";CODICE.CARATT(255);2))-1)

      e per la seconda parte


      =STRINGA.ESTRAI(A1;TROVA(CODICE.CARATT(255);SOSTITUISCI(A1;".";CODICE.CARATT(255);2))+1;TROVA(" ";A1)-TROVA(CODICE.CARATT(255);SOSTITUISCI(A1;".";CODICE.CARATT(255);2))-2)

      a presto 🙂

  55. Nauro ha detto:

    Ciao,
    io ho un problema credo piuttosto banale: devo usare la funzione stringa.estrai e fin qui tutto bene, tra l’altro in questo forum ho imparato moltissime funzionalita’ che neppure immaginavo e che, usate combinate, mi potranno essere molto utili in futuro. Mi sono salvato tutto il forum e gia’ per questo, moltissime grazie.
    Veniamo al mio problema: io devo usare la funzione stringa.estrai ma in una macro, dentro un ciclo while/wend per cui ho necessita’ di rimpiazzare A1 (cella dove c’e’ il testo da estrarre) con Cells(R,C) (dove naturalmente R e’ la variabile Riga e C e’ la Colonna).
    Insomna la cella dove c’e’ il testo da estrapolare e’ una variabile ed io sono talmente “gnugnu” che non conosco la sintassi corretta per rimpiazzare A1 con Cells(R,C).
    Naturalmente non sono un informatico professionista ma uso molto excel per lavoro come un apprendista stregone, scopiazzando qua e la.
    Grazie di cuore a chi vorra’ fornirmi una soluzione.
    Mauro

    • gianfranco ha detto:

      Ciao Mauro,
      innanzitutto grazie per i complimenti 🙂

      Se mi dici esattamente cosa vuoi fare, magari con un esempio del tuo loop, vedo di aiutarti.

      Tanto per cominciare sappi che puoi ottenere le coordinate di una cella in questo modo

      Range("A1").Column 'Restituisce il numero della colonna
      Range("A1").Row 'Restituisce la riga

      Quindi, per A1 è un semplice CELLS(1,1)

      La funzione corrispondente a STRINGA.ESTRAI in VBA si chiama MID e si usa in questo modo


      MID(testo, inizio, [lunghezza])

      Appena mi dai un paio di info in più su cosa vuoi fare ti aggiorno 🙂

      Se vuoi puoi anche scrivermi via email, trovi l’indirizzo nella pagina “CONTATTAMI”

  56. Mauro ha detto:

    Ciao Gianfranco,
    ti ringrazio per aver subito risposto.
    In questo momento ti posso rispondere solo dal telefonino, domani con il computer cerchero’ di essere piu’ chiaro e fornire un esempio concreto.
    Avevo gia’ visto che lo stringa.estrai diventa MID nella macro, avevo anche capito che A1 e’ la cells(1,1), il problema mio e’ che vorrei usare delle variabili (Riga,Colonna) invece di (1,1) e se scrivo Cells(R,1)= “=MID(Cells R,2);10;3)”
    Dove per esempio volessi scrivere nella riga R, colonna 1, quello che estraggo dalla riga R, colonna 2, dal decimo carattere per 3 caratteri nella cella scrive (mi pare) #Nome?.
    Mi e’ anche parso di capire che devo posizionare dei & e delle “” ma non riesco a farlo nel modo corretto.
    Comunque domani vedro’ di essere piu’ preciso. Per ora grazie molte.
    Mauro

    • gianfranco ha detto:

      Ho risposto alla tua mail, troverai la soluzione nel file allegato 🙂

      Rispondo anche qui perché non mi piace lasciare i commenti senza una risposta eheheh

  57. Mauro ha detto:

    Ciao Gianfranco,
    ho visto la tua risposta, adesso non posso ma questa sera provero’ la suluzione che mi proponi e sono sicuro che funzionera’.
    Grazie di cuore per l’assistenza.
    Io ti ho scritto una mail semplicemente perche’ non sapevo come allegare il file d’esempio ma secondo me potrebbe essere utile anche per altri la soluzione che mi hai dato, quindi, da parte mia, nessun problema se pubblichi la risposta sul forum.
    Mauro

  58. samuela ha detto:

    ciao,
    ti chiederei la gentilezza di aiutarmi con una formula che non riesco a creare.

    devo cercare in una cella con del testo, sapendo che le parole iniziali in una riga sono es. PAOLO ROSSI devo estrarre PAOLO ROSSI e tutte le altre parole presenti in quella riga di testo, es. PAOLO ROSSI AL MARE.

    esiste una formula da apllicare?

    Grazie infinite

    • gianfranco ha detto:

      Ciao Samuela,
      non ho capito se vuoi cercare una cella in un elenco in base ad un valore passato (es. PAOLO ROSSI) e recuperare tutto il testo (in questo caso parliamo di un CERCA.VERT) o se è qualcosa di diverso.

      Volendo puoi mandarmi un file di Excel via email con dei dati finti e mettermi in una cella il risultato che vorresti. Il mio indirizzo email lo puoi trovare nella sezione “Contattami” del sito nel menu in alto.

      A presto

  59. Lorenzo ha detto:

    Ciao Gianfranco,
    ho letto i post precedenti ma non riesco a trovare qualcosa che fa al caso mio.
    Ho scaricato una lista di miei contatti LINKED IN ed il testo che mi è ritornato è un disastro.
    Nella stessa cella – diciamo A1 – ho nome, cognome, una serire di campi vuoti, poi l’indirizzo mail, ed un’altra serie di campi vuoti ….
    Il testo recita letteralmente:
    ,”Nome”,””,”Cognome”,””,”nome@email.com”,””,””,””,””,””,”Nome della società”,””,””,””,””,”Job Title”,””,””,””,”

    Come posso fare ad avere NOME, COGNOME, INDIRIZZO MAIL e NOME SOCIETAà in 4 celle diverse?

    Grazie per l’aiuto
    LP

  60. rosaria ha detto:

    ciao,

    avrei bisogno del tuo aiuto.
    ad esempio del codice 14276.7 ho bisogno di ottendere solo le prime 5 cifre senza il punto e l’ultimo numero.
    mi aiuteresti gentilmente

    • gianfranco ha detto:

      Buongiorno Rosaria,
      mi scuso per il ritardo ma ho avuto alcuni contrattempi in questi giorni, la formula per risolvere il tuo problema è semplice, ponendo che il numero sia in A1


      =SINISTRA(A1;TROVA(".";A1)-1)

      Se vuoi che il risultato sia un numero da utilizzare per calcoli, e non una stringa, devi anteporre due trattini ( – )


      =--SINISTRA(A1;TROVA(".";A1)-1)

  61. VIncenzo ha detto:

    Ciao Avrei neccessità del tuo aiuto. In pratico ho una stringa di teso molto lunga dalla quale devo estrarre un numero che poi dovrà essere sommato ad altri numeri estratti da altre stringhe. Ti faccio un esempio: ho una stringa di questo tipo
    INCASSI ORD:DB SPA – D.C.C. DCC ACCR POS 2816 LOR 87,45 NET 86,40
    INCASSI ORD:DB SPA – D.C.C. DCC ACCR POS 2816 LOR 125,93 NET 124,42
    INCASSIORD:DB SPA – D.C.C. DCC ACCR PGT 2816 LOR 188,83 NET 187,51

    Mi servirebbe estrarre in colonna tutti i valori Lordi e cioè il numero tra LOR e NET, per poi poterli sommare con una semplice formula SOMMA. Come posso fare?
    Grazie mille

    • gianfranco ha detto:

      Ciao Vincenzo,
      essendo il numero compreso sempre tra LOR e NET è una formula abbastanza semplice, ponendo che la stringa sia ina A1 la formula sarà:


      =--ANNULLA.SPAZI(STRINGA.ESTRAI(A1;TROVA("LOR";A1)+4;TROVA("NET";A1)-TROVA("LOR";A1)-4))

      i 2 trattini servono a convertire la stringa estratta in un numero utilizzabile per le somme.

      Se hai dubbi non esitare a chiedere 🙂

  62. valentina ha detto:

    Ciao, mi servirebbe sapere se è possibile ricavare una cosa, faccio un esempio così spiego meglio:
    roberto rossi, Italy; mark belker, Usa; paul faustin, glasgow; anna verdi, italy.
    tutti questi nomi sono nella stessa cella nell stessa riga e mi servirebbe ricavare solo i nomi italiani.
    grazie mille

  63. valentina ha detto:

    mi correggo le celle sono composte così:
    [Formosa, A.; Cortelli, S.; Croce, N.; Bernardini, S.] Univ Roma Tor Vergata, Dept Internal Med, Rome, Italy; [Lena, A. M.; Melino, G.; Candi, E.] Univ Roma Tor Vergata, Dept Expt Med & Biochem Sci, Rome, Italy; [Lena, A. M.; Melino, G.; Candi, E.] Univ Roma Tor Vergata, Biochem Lab IDI IRCCS, Rome, Italy; [Markert, E. K.] Inst Adv Study, Simons Ctr Syst Biol, Princeton, NJ 08540 USA; [Miano, R.; Finazzi-Agro, E.] Univ Roma Tor Vergata, Policlin Tor Vergata, Div Urol, Dept Surg, Rome, Italy; [Mauriello, A.] Univ Roma Tor Vergata, Dept Biopathol & Image Diagnost, Rome, Italy

    mi servirebbe ottenere solo i nomi nelle parentesi quadre di italiani, quindi quelli dove alla fine compare italy.
    grazie mille

    • gianfranco ha detto:

      Ciao Valentina,
      purtroppo non esiste una formula che ti possa aiutare in questo caso, bisogna per forza scrivere una macro che esegua tutte le operazioni necessarie.

  64. Fabrizio ha detto:

    Ciao,
    Sono nuovo del sito ma avrei bisogno di un consiglio,
    Dovrei estrarre da una cella la parte di testo che precede il primo numero che si trova in posizione variabile.
    A-B43x20-C dovrei estrarre A-B
    A-BD35x5-C dovrei estrarre A-BD
    A-BD-E35x5-C dovrei estrarre A-BD-E

    Non so se sia possibile, in sostanza avrei bisogno di dire ad Excel di cercare il primo carattere numerico.

    Grazie 1000.

    • gianfranco ha detto:

      Ciao,
      la formula non è semplicissima ma ti basta un copia e incolla per farla funzionare 🙂

      Ponendo che il tuo testo sia in A1 metti in B1 la seguente formula


      =STRINGA.ESTRAI(A1;1;MIN(RICERCA({"0"\"1"\"2"\"3"\"4"\"5"\"6"\"7"\"8"\"9"};A1&"0123456789"))-1)

      Ed il gioco è fatto 🙂

      • Fabrizio ha detto:

        Ciao, grazie 1000 per la disponibilità,
        Purtroppo anche copiandola la formula non funziona, forse anche perché utilizzo una versione di Excel in inglese, ho già provato a tradurre le funzioni ma senza risultato.
        Se ti è possibile magari con una spiegazione della formula riesco ad applicarla.
        Grazie ancora!

  65. maurizio ha detto:

    ciao sei bravissimo ……. grazie per questo blog molto utile
    dunque ho una serie di numeri positivi e con andamento progressivo da formule matematiche sulle celle
    esempio 0,02 su A1… 0,98 su A2 …..1,08 su A3 …..2,06 su A4 ecc…..
    desidero avere sulla corrispondente B1 0,00 ……..B2 0,00 …… B3 1,00 B4 2,00 i seguenti risultati
    che definiscono il numero intero cioè da 0 e 1,99999 risulta 0,00 da 1 a 1,99999 risulta 1 da 2 a 2,9999 risulta 2 ecc

    10^3 grazie !!!

    • gianfranco ha detto:

      Ciao Maurizio,
      per quello che serve a te basta usare la funzione di Excel ARROTONDA.DIFETTO


      =ARROTONDA.DIFETTO(A1;1)

      Ti arrotonda per difetto il valore passato all’unità più vicina 🙂

  66. Andrea ha detto:

    Ciao, avrei un problema, nella cella A1 ho una stringa come questa, LADY’S SHIRT LONG SLEEVE SKL2293#G#, io dovrei estrarre tutti i caratteri prima dell’ultimo spazio, ottenendo cosi questo risultato LADY’S SHIRT LONG SLEEVE, mi serve eliminare anche lo spazio, ci ho provato ma sbaglio qualcosa… mi puoi aiutare per favore ?

    • gianfranco ha detto:

      Ciao Andrea,
      la formula che ti serve è:


      =ANNULLA.SPAZI(STRINGA.ESTRAI(A1;RICERCA(CODICE.CARATT(254);SOSTITUISCI(A1;" ";CODICE.CARATT(254);LUNGHEZZA(A1)-LUNGHEZZA(SOSTITUISCI(A1;" ";""))))+1;LUNGHEZZA(A1)))

      ed in questa pagina la trovi spiegata passo passo 🙂

      • Andrea ha detto:

        Ciao e grazie per l’aiuto, ho testato la formula ma a me serve l’esatto contrario, ipotizzando questa stringa: LADY’S BLOUSE SHORT SLEEVE DBK0040#G#
        a me serve mantenere LADY’S BLOUSE SHORT SLEEVE ed eliminare quindi ” DBK0040#G#”.
        Grazie mille.
        🙂

        • gianfranco ha detto:

          Ooops… scusa, ho interpretato male, ecco la formula che ti serve:


          =ANNULLA.SPAZI(STRINGA.ESTRAI(A1;1;RICERCA(CODICE.CARATT(254);SOSTITUISCI(A1;" ";CODICE.CARATT(254);LUNGHEZZA(A1)-LUNGHEZZA(SOSTITUISCI(A1;" ";""))))))

          Scusa ancora

        • Mariano ha detto:

          Ciao Gianfranco potresti aiutarmi cortesemente?

          ho un campo testo che varia la lunghezza e devo:
          1) Contare il numero di caratteri compresi gli spazi ed ho risolto così – =LUNGHEZZA(A2)
          2) contare il numero di parole presenti ed ho risolto così – =LUNGHEZZA(ANNULLA.SPAZI(A2))-LUNGHEZZA(SOSTITUISCI(A2;” “;””))+1
          3) Contare il numero di caratteri senza gli spazi non risolto?

          Grazie

          • gianfranco ha detto:

            Ciao Mariano,
            la soluzione ce l’hai già nella domanda 🙂


            =LUNGHEZZA(SOSTITUISCI(A2;" ";""))

            Questa formula restituisce il numero di caratteri spazi esclusi 🙂

            A presto

  67. Mariano ha detto:

    Ciao Gianfranco, vorrei sapere cortesemente se se condo te è possibile estrarre da un’unica stringa così formata:

    [“Si”,”Abbastanza”,”No”,”Abbastanza”,”Si”,”Abbastanza”,”SI”,”Abbastanza”,”Si”,”Si”,”Abbastanza”,”No”,”Abbastanza”,”Abbastanza”,”No”,”No”,”Si”,”Si”,”Si”,”Si potrebbero tenere i laboratori aperti più tempo”]

    ogni singola voce che può però variare perché è il risultato di un questionario scolastico. Si potrebbe utilizzare questo metodo TRINGA.ESTRAI?
    Grazie

    • gianfranco ha detto:

      Ciao Mariano,
      nel tuo caso prima pulirei le stringhe inserendo, ad esempio nella colonna B, questa formula:


      =SOSTITUISCI(SOSTITUISCI(SOSTITUISCI(A1;"[";"");"]";"");"""";"")

      in modo da eliminare le virgolette e le parentesi quadre.

      Copia le celle con la formula e incollale come VALORE (Scheda HOME -> Incolla -> Incolla come valori)

      Fatto questo basta selezionare le celle che vuoi dividere in colonne, andare nella scheda “Dati” in alto (o nel menu dati se hai un Excel pre-2007) e selezionare la voce “Testo in colonne”.

      Nella maschera che ti si apre seleziona “Delimitato” e poi premi AVANTI, nella maschera successiva seleziona come delimitatore VIRGOLA e togli gli altri eventualmente selezionati, quindi AVANTI e FiNE.

      Qui trovi un video fatto su misura per te 🙂

      https://youtu.be/bN18ETwkGM8

  68. NICOLETTA ha detto:

    CIAO SCUSAMI SE TI DISTUERBO AVREI BISOGNO DEL TUO AIUTO.
    HO UNA SERIE DI CELLE CON ALL’INTERNO NUMERI DA 11 CIFRE, PRIMA DELLE ULTIME 2 DEVO INSERIRE IL SIMBOLO/
    ES: 12345678915 DEVE DIVENTARE 123456789/15
    GRAZIE MILLE

    • gianfranco ha detto:

      Ciao Nicoleta,
      nessun disturbo, la formula che ti serve è:


      =SINISTRA(A1;9)&"/"&DESTRA(A1;2)

      Sempre che siano tutte lunghe 11 caratteri, viceversa, se vuoi esser sicura che vengano messe dopo la barra solo le ultime 2 cifre, anche se il numero totale di caratteri è diverso da 11, puoi usare:


      =SINISTRA(A1;LUNGHEZZA(A1)-2)&"/"&DESTRA(A1;2)

      A presto!

  69. Alberto ha detto:

    Ciao e complimenti
    sto cercando di contare il numero di valori in un elenco di celle, separati dal ;
    Es:
    [1; 3; 12; 56/A; 237; 238; SNC]
    [2; 4; 6; 8; 10; 12; 14; 16; 2/A; 2/R; 4/R]
    [1; 2; 3; 4; 5; 6; 7; 9; 14; 16; 18; 20; 22; 24; 26; 28; 18/C]

    In cui quindi gli elementi possono avere lunghezza variabile ed essere composti da numeri, simboli e lettere. Ho cercato di farlo con degli arrotondamenti dopo aver contato ti caratteri e divisi per un certo numero, però è troppo impreciso.
    Se riuscissi a contare quante volte si ripete il ; nella cella (+ 1, perchè l’ultimo non ha mai il ;), avrei risolto, ma non riesco a capire come fare, anche leggendo i vari esempi fatti per gli altri
    Hai qualche suggerimento?
    Grazie mille in anticipo!

    • gianfranco ha detto:

      Ciao Alberto,
      la tua intuizione è giusta, il metodo più semplice e rapido è proprio quello di contare i “;”, purtroppo Excel non dispone di una funzione interna per farlo direttamente, quindi si usa un piccolo escamotage, si conta il numero di caratteri della stringa


      =LUNGHEZZA(A1)

      e poi si contano i caratteri della medesima stringa sostituendo il punto e virgola con un carattere vuoto, eliminandoli così dalla stringa


      =LUNGHEZZA(SOSTITUISCI(A1;";";""))

      si sottraggono i questi ultimi ai precedenti e infine si somma 1. La formula finale è:


      =LUNGHEZZA(A1)-LUNGHEZZA(SOSTITUISCI(A1;";";""))+1

      Il risultato di [1; 2; 3; 4; 5; 6; 7; 9; 14; 16; 18; 20; 22; 24; 26; 28; 18/C] sarà quindi 17 🙂

      Se hai dubbi chiedi pure

      A presto

      • Alberto ha detto:

        Giusto!
        Grazie mille dell’idea, problema risolto in modo brillante ed efficiente
        Alla fine ho un risultato più preciso e con meno passaggi di prima!

      • Mariano ha detto:

        Ciao Gianfranco, vorrei chiederti se è possibile ottenere da:
        1 2 5 7 10 11 13 14 16 17
        2 3 4 5 9 10 13 15 16 20
        2 3 4 8 10 11 14 15 16 17
        1 3 5 8 12 15 16 18 19 20
        2 3 4 6 7 8 16 18 19 20
        quante volte è presente per colonna ogni singolo numero.
        Ad es. nella colonna 1 compaiono 2 volte il numero 1 e tre volte il numero 2. E’ possibile fare questo calcolo per ogni colonna?
        Grazie

  70. Paolo ha detto:

    Ciao e complimenti! La mia esigenza non pare essere contemplata negli esempi precedenti, forse non è posisbile con le formule. Io ho stringhe di testo variabili in diverse celle e mi serve estrapolare le prime 2 lettere di ogni parola (o numero) che compone la stringa. Per esempio, nella cella A1 è scritto SCHEDA AUDIO PESTAR e vorrei che il codice sia SCAUPE, nella cella A2 è scritto INTERVENTO TECNICO GENERICO è dovrebbe apparire INTEGE, nella cella A3 è scritto CONNETTORE XLR 2 POLI MASCHIO è dovrebbe apparire il codice COXL2POMA etc. E’ possibile con le formule di EXCEL? Grazie PAOLO

  71. lello207 ha detto:

    buongiorno avrei bisogno di mettere un valore in un modulo c/c tipo poste da sx verso dx con un asterisco* iniziale esempio 12345,32
    miserve che esca **12345,32
    grazie

  72. Fabio ha detto:

    Buongiorno,

    complimenti per le spiegazioni e la chiarezza.
    Ho letto tutti i precedenti commenti ma non ho trovato la soluzione al mio problema:
    ho una serie di stringhe in colonne:

    Symantec VERITAS File System 6.0 on crtrtrtrtr
    Symantec VERITAS Storage Foundation 5.1 on delta12
    Symantec VERITAS File System 5.0 on asap01
    Symantec VERITAS File System on adcfred7f
    Symantec VERITAS Cluster Server 6.0 part of cluster: dwh3_cluster on adedwh12s
    Symantec Veritas Storage Foundation Cluster File System 6.0 on despatio22

    il risultato che mi serve ottenere è:

    6.0
    5.1
    5.0
    N/D
    6.0
    6.0

    qualche suggerimento?

    ciao e grazie in anticipo.

  73. Gianfranco ha detto:

    Ciao Gianfranco, please help me …
    da un file di 15000 righe devo estrapolare il campo indirizzo in una cella/stringa di lunghezza variabile ES:
    Divisione Economia e Sviluppo CORSO FRANCESCO FERRUCCI 122 00001 Torino
    Anagrafe Centrale VIA CARLO IGNAZIO GIULIO 22 00014 Torino
    Polo Elettorale VIA DEI GLADIOLI 13 00015 Torino
    In pratica mi servirebbe la parte in maiuscolo più eventualmente anche il CAP + Torino

  74. Roberto ha detto:

    Buongiorno Gianfranco,
    Sono nuovo di questo forum e visto la tua grande disponibilità vorrei chiederti un aiuto riguardo una formula da utilizzare.
    ho una cella con del testo dovrei estrapolare il codice alfanumerico di 3 caratteri che trovo dopo la parola “rigo”, la stessa parola nella cella la posso trovare piu volte.
    Ho provato con la funziona stringa.estrai e trova ma riesco ad estrapolare solo il primo codice, come posso fare una ricerca ciclica per le volte che si presenta la parola “rigo” all’interno della cella.
    Spero di essere stato abbastanza chiaro.

    Ringrazio anticipatamente
    ciao Roberto

    • gianfranco ha detto:

      Ciao Roberto,
      riesci a mettermi almeno una riga di esempio sulla quale poter lavorare? 🙂

      • roberto ha detto:

        certamente, ti allego qui sotto il contenuto della cella

        “dal controllo formale ex art. 36 ter D.P.R. 600/1973 è emerso che il SIGNORX ha rilasciato il visto di conformità infedele sulla dichiarazione Mod. 730/2012 per l’anno d’imposta 2011 del signor PINCO PALLINO ; ed ha rettificato l’importo relativo alle spese di istruzione indicato al rigo E13 da € 380,00 ad € 80,00 e, totalmente, l’importo relativo ad altri oneri deducibili indicato al rigo E26 cod. 5 per € 2.801,00, in base alla documentazione prodotta e/o ai dati in possesso dell’Ufficio”

        da questa cella in poche parole dovrei estrarre la parola successiva a “rigo” in questo caso E13 e E26,
        la parola rigo puo comparire piu volte o una volta sola all’interno della cella.

        Ringrazio in anticipo per la tua disponibilità
        ciao Roberto

        • gianfranco ha detto:

          Ciao Roberto,
          scusa per il ritardo ma le festività mi han portato via 🙂

          Analizzando il tuo problema devo dirti che, purtroppo, non mi vengono in mente formule che possano soddisfare la tua richiesta. Volendo puoi usare una macro scritta ad hoc per la tua necessità, se non hai limitazioni nell’uso delle macro ci posso lavorare

          • Roberto ha detto:

            Te ne sarei grato …non vorrei approfittare troppo della tua disponibilità ..ma non so proprio dove sbattere la testa 🙂

  75. Giusy ha detto:

    Ciao Gianfranco,
    abbiamo applicato la formula (quella dele 2 virgole): =STRINGA.ESTRAI(A1;30;42)

    solo che dobbiamo ripeterla per 32 righe dove i valori sono diversi, cito esempio:
    CORSO EUROPA, 19, CARMAGNOLA (TO)
    V. RIVA DEL GARDA, 11, TORINO (TO)
    VC. PORTA DI BOSIO, 6, PANCALIERI (TO)
    A me interessa la parte di testo dopo la seconda virgola, come posso usare la stessa formula per tutte le 32 righe del foglio?
    Grazie sei molto chiaro ed esaustivo, ma la mia conoscenza di excel è proprio scarsa.

  76. stefano ha detto:

    ciao Gianfranco,
    avrei bisogno di un aiuto in merito ad una formula, nel mio caso ho 1 file xls con 2 fogli, attualmente faccio una formula di questo tipo
    =foglio2!A2
    facendo cosi mi prende tutto quello inserito nella cella A2 del secondo foglio e lo inserisco nel primo foglio, ma le stringhe in quella cella possono variare in base al tipo di selezione effettuate tramite un flow, comunque poniamo che nella cella dove andare a prendere il dato io abbia una cosa del genere
    Linea Prodotto Colore
    in questo caso io vorrei prendere solo l’ultima stringa Colore, ma in alcuni casi può essere presente solo
    Linea Prodotto
    o in altri casi
    Linea
    come posso fare?
    grazie x il tuo aiuto

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.

%d blogger hanno fatto clic su Mi Piace per questo: