Confronto Stringa



  • Confronto Stringa
    di Gigi50 (utente non iscritto) data: 16/10/2015 16:51:29

    Ciao a tutti, chiedo cortesemente un aiuto per il seguente problema:

    Ho un file excel composto da 2 fogli:
    In foglio A ho 3 colonne: "CAUSALE", "DATA" E "VERSAMENTO".
    La colonna CAUSALE è un testo tipo così: "Bonifico a Vs favore: ORDINANTE prova causale: MARIO ROSSI iscrizione attività"
    In foglio B ho "NOME COGNOME", "DATA" E "VERSAMENTO"

    Io chiedo se è possibile costruire una macro che verifica se "NOME COGNOME" del foglio B è presente nella colonna "CAUSALE" di foglio A, e se lo è, mi copia DATA E VERSAMENTO DI FOGLIO A in DATA E VERSAMENTO di foglio B.

    Spero di essere stato in grado di spiegarmi..

    Intanto ringrazio chi riuscirà a darmi una mano...



  • di Mister_x (utente non iscritto) data: 16/10/2015 17:37:47

    ciao

    in cella
    D2=SE.ERRORE(CERCA.VERT("*"&A2&"*";A!$A$2:$C$3;2;0);"NO")
    E2=SE.ERRORE(CERCA.VERT("*"&A2&"*";A!$A$2:$C$3;3;0);"NO")

    riallego il tuo file con funzioni inserite

    ciao





  • di Gigi50 (utente non iscritto) data: 16/10/2015 18:02:16

    Ciao!

    Prima di tutto ti ringrazio, è proprio quello che mi serviva...Ti chiedo però un ulteriore cosa:

    Potresti spiegarmi la formula "in italiano" perchè vorrei capire,
    =SE.ERRORE(CERCA.VERT("*"&A2&"*";A!$A$2:$C$3;2;0);"NO")

    non sono molto esperto, ma il mio file originale è composto da altri campi e mi piacerebbe capire per poter arrangiarmi nel sistemarlo...

    Grazie!



  • di Gigi 50 (utente non iscritto) data: 16/10/2015 19:21:29

    Io i dati CAUSALE, DATA E SOLDI li estrapolo da un programma:
    La colonna causale è una cella (TESTO) con contenuto il nome da ricercare ma anche con altre centinaia di informazioni (indirizzo di chi effettua il bonifico, codice IBAN, ecc.).
    Ho notato che la formula non riesce a ricercare perche il testo è lunghissimo. Cioè oltre al nome MARIO ROSSI sono contenute altre informazioni, e la formula non mi trova niente. Se manualmente inserisco MARIO ROSSI invece funziona.

    Cioè, la cella ha una dimensione massima dove poter ricercare?





  • di Mister_x (utente non iscritto) data: 16/10/2015 21:24:11

    ciao Gigi

    non penso che sia un proplema di lunghezza cella in quanto la funzione di ricerca va a trovare il pezzo di stringa che e' inserito in essa
    =SE.ERRORE(CERCA.VERT("*"&A2&"*";A!$A$2:$C$3;2;0);"NO")

    in parole povere cosa fa questa??
    se.errore() questa serve per un eventuale errore di ritorno alla funzione cerca.vert() la quale ha il parametro finale a valore 0 o Falso quindi deve essere preciso
    cosa fa noi immettiamo la stringa da cercare, ma avendone a nostro utilizzo solo un pezzo mettiamo un asterisco* prima e uno dopo* questi non fanno altro che sostituire tutto quello che ce prima e dopo la nostra stringa, senza sapere in che punto e' posizionato MARIO ROSSI o Tizio Paperino ecc. ecc.

    a questo punto per verificare il perche' bisogna proprio agire sul file che ti viene passato per vedere il punto dove non viene trovato e il perche'

    ciao






  • di Gigi50 (utente non iscritto) data: 17/10/2015 11:55:24

    Ciao ...e grazie per tutte le informazioni.

    Ho riallegato il file aggiungendo, per spiegarmi, la parola "ordinante" ripetuta decine di volte.
    In questo caso con la solita formula, MARIO ROSSI anche se presente non viene più trovato...



  • di Mister_x (utente non iscritto) data: 17/10/2015 13:20:11

    ciao

    e' come sospettavo, nella cella ci devono essere al massimo 255 caratteri e non di piu' causa errore di ricerca, quindi in questo caso dato che la nostra ricerca bisona effettuarla nell'ambito di 255 bisogna utilizzare una formula matriciale
    in D2 =SE.ERRORE(CERCA.VERT("*"&A2&"*";STRINGA.ESTRAI(A!$A$2:$C$3;1;255);2;0);"NO")*1
    in E2 =SE.ERRORE(CERCA.VERT("*"&A2&"*";STRINGA.ESTRAI(A!$A$2:$C$3;1;255);3;0);"NO")*1
    queste prima di trascinarle vanno confermate con ctrl+maiusc+invio

    riallego il file

    ciao









  • di Gigi 50 (utente non iscritto) data: 17/10/2015 14:09:15

    Ciao e grazie!!!

    Ho riallegato il file PROVA (4), ma non capisco dov'è che sto sbagliando? Ho cambiato la formula in questo modo:
    =SE.ERRORE(CERCA.VERT("*"&A2&"*";STRINGA.ESTRAI(A!$A$2:$C$7;1;255);2;0);"NO")*1

    inserendo $C$7 invece che $C$3, perchè ho piu righe, però non mi funziona....



  • di Mister_x (utente non iscritto) data: 17/10/2015 15:02:40

    ciao

    le formule sono matriciali e vanno confermate con i tasti
    ctrl+maiusc+invio
    e alla fine appariranno in questa maniera

    {=SE.ERRORE(CERCA.VERT("*"&A2&"*";STRINGA.ESTRAI(A!$A$2:$C$7;1;255);2;0);"NO")*1}

    le parentesi graf non puoi metterle tu ma e' excel che le inserisce automaticamente

    ti riallego il file Prova(5) con le formule inserite

    ciao





  • di Gigi50 (utente non iscritto) data: 17/10/2015 16:08:35

    Perfettoooooooooooooooo!!!

    Ultimissima cosa e poi non ti disturbo più:

    Se un nome non è presente invece di scrivermi nella cella NO, mi restituisce #VALORE!



  • CERCA.VERT
    di canapone (utente non iscritto) data: 17/10/2015 18:23:25


    Ciao,

    riprendo l'ottimo lavoro di Mister_X (un caro saluto).

    Prova a spostare il "*1" in coda al cerca.vert e riconferma la formula con control+maiusc+invio

    In D2:

    =SE.ERRORE(CERCA.VERT("*"&A2&"*";STRINGA.ESTRAI(A!$A$2:$C$3;1;255);2;0)*1;"NO")

    In E2

    =SE.ERRORE(CERCA.VERT("*"&A2&"*";STRINGA.ESTRAI(A!$A$2:$C$3;1;255);3;0)*1;"NO")

    Sei avessi difficoltà con la forma matriciale

    in D2

    =SE.ERRORE(CERCA.VERT("*"&A2&"*";INDICE(STRINGA.ESTRAI(A!$A$2:$C$3;1;255););2;0)*1;"NO")

    in E2

    =SE.ERRORE(CERCA.VERT("*"&A2&"*";INDICE(STRINGA.ESTRAI(A!$A$2:$C$3;1;255););3;0)*1;"NO")

    Saluti




  • di Gigi 50 (utente non iscritto) data: 18/10/2015 13:40:57

    Perfetto!!! Con le prime 2 che mi hai suggerito funziona tutto perfettamente.

    Un sentito grazie a tutti e due. GRAZIE MILLE!!!

    Ciao!



  • di Gigi 50 (utente non iscritto) data: 20/10/2015 20:37:28

    Ciao!!! Riapro la discussione...

    Chiedo,

    si può dopo aver verificato la corrispondenza di NOME COGNOME tra i 2 fogli ed inserito data e soldi nel foglio B, tornare nel foglio A ed inserire in una nuova colonna a destra la scritta "NOME VERIFICATO"?

    Grazie!




  • di Mister_x (utente non iscritto) data: 20/10/2015 22:23:42

    ciao

    e' un pochino contorta ma nel foglioA in D2 prova a mettere la seguente formula

    =SE.ERRORE(SE(CERCA.VERT(B!D2;A!B$2:B$7;1;0)=B!D2;"Nome Verificato";);"non presente")


    ciao





  • di Nino 50 (utente non iscritto) data: 21/10/2015 19:47:01

    Ciao!

    Funziona perfettamente! Potresti anche cercare di farmi capire come "ragiona" la formula...
    Cioè, c'è questo controllo (B!D2;A!B$2:B$7;1;0), quindi sulla colonna DATA dei 2 fogli?



  • di Nino 50 (utente non iscritto) data: 23/10/2015 19:00:12

    Scusa, ti chiedo:

    perchè il controllo è sulla colonna DATA?