Estrarre seconda o terza parola



  • Estrarre seconda o terza parola
    di BURY (utente non iscritto) data: 06/02/2016 16:37:20

    Ho una situazione di questo tipo:

    Ciao Luca 87
    Ciao Amleto 9
    Hello Paola 456

    Dovrei estrarre il nome e il numero e metterli in due colonne separate.
    Ho provato qualche funzione come STRINGA.ESTRAI e TROVA ma non sono riuscito a venirne fuori perchè le parole hanno caratteri diversi.
    Avete dei suggerimenti ?
    Chiaramente è un esempio, potrei aver bisogno di estrarre la terza o la quarta o la quinta parola.....




  • di Santuberto (utente non iscritto) data: 06/02/2016 16:48:04

    Buongiorno. Intanto puoi trovare il primo nome. Per il resto... STRINGA.ESTRAI(A;TROVA(" ";A)+1;100)


  • Estrarre seconda o terza parola
    di BURY (utente non iscritto) data: 06/02/2016 16:58:03

    ok, ti ringrazio.

    Tuttavia con la formula che tu mi ha dato hai estratto tutto quello che viene dopo il " "+1 perchè sulla lunghezza hai messo 100. Ma ipotizziamo che io abbia quattro parole e ne voglia estrarre solo una di queste.

    sole cuore amore logica
    pace solidarietà empatia verde
    vittoria guerra odio rosso

    Il numero di caratteri diventa variabile per ogni riga. Quindi, il "100" deve essere variabile.
    Come posso estrarre solo la seconda oppure la terza parola ?



  • di Santuberto (utente non iscritto) data: 06/02/2016 16:59:02

    Ti allego un file con una possibile soluzione. Vedi se riesci adattarla alle tue esigenze.



  • di patel data: 06/02/2016 18:13:10

    prima le parole erano 2 + un numero, ora sono diventate 4, allega un file di esempio realistico e decidi cosa vuoi.
    il separatore tra le parole è sempre lo spazio ?





  • di BURY (utente non iscritto) data: 06/02/2016 23:40:48

    Grazie mille a Santuberto per il file.

    In allegato vi invio alcune righe del mio problema.
    In pratica dovrei estrarre Giorno, Paese e Città.
    Come posso fare con queste funzioni ? Gli posso dire con Trova di beccare dal secondo spazio quando la posizione è variabile ?



  • di Gianfranco data: 07/02/2016 01:20:29

    Ciao

    ti allego il tuo file modificato
    clicca sul pulsante in A1
    questa macro divide le stringhe
    in presenza dello spazio

    ho fatto in modo che cancelli l'anno in colonna E

    divide 2 3 4 5 quante ne trova parole
    se di mezzo c'è lo spazio



  • di Mohican1989 data: 07/02/2016 02:52:27

    Ciao, Gianfranco che saluto ti ha già dato una soluzione valida, io propongo la mia.

    Si tratta di una UDF (user defined function) ovvero una codice scritto in VBA che puoi riutilizzare sotto forma di formula come tutte le altre.

    Ovviamente come l ho costruita ora gestisce solo stringhe divise da " " quindi solo uno spazio tra una parola e l' altra.

    In qualsiasi cella inserisci =trovaparola(testo,posizionedellaparola) e sarà restituita la parola che corrisponde alla posizione inserita.

    Sotto il codice in VBA, ti allego il file, se vuoi riutilizzarla in altri file excel devi copiare il codice in un nuovo modulo del file in cui intendi usarla. 

    Edit: sistemato alcuni errori di typo nel messaggio ^^
     
    Public Function TROVAPAROLA(testo As String, posizione As Integer) As String
    Application.Volatile
    Dim Contenitore()
    Dim spazio As String: spazio = " "
    
    
    If posizione = 1 Then
        limite = InStr(1, testo, spazio, vbTextCompare)
        TROVAPAROLA = Mid(testo, 1, limite)
    Else
    
    
    For x = 1 To posizione
    ReDim Preserve Contenitore(posizione)
        limite = InStr(limite + 1, testo, spazio, vbTextCompare)
        Contenitore(x) = limite
    Next
    
    Sceltaitem = posizione - 1
    inizio = Contenitore(Sceltaitem)
    fine = Contenitore(posizione)
    If Contenitore(posizione) = 0 And Contenitore(Sceltaitem) = 0 Then
    TROVAPAROLA = "CI SONO MENO DI " & posizione & "PAROLE"
    ElseIf Contenitore(posizione) = 0 And Not Contenitore(Sceltaitem) = 0 Then
    TROVAPAROLA = Mid(testo, inizio + 1, Len(testo) - inizio)
    Else
    
    TROVAPAROLA = Mid(testo, inizio + 1, fine - inizio - 1)
    End If
    
    End If
    
    
    End Function
    



  • di BURY (utente non iscritto) data: 07/02/2016 09:28:21

    Grazie mille !

    Veramente utile. Siete estremamente competenti.

    Grazie ancora