È soltanto un Pokémon con le armi o è un qualcosa di più? Vieni a parlarne su Award & Oscar!

Excel Forum Per condividere esperienze su Microsoft Excel

FUNZIONE LIKE

  • Messaggi
  • OFFLINE
    cip71
    Post: 1
    Registrato il: 22/02/2011
    Città: ROMA
    Età: 53
    Utente Junior
    2013
    00 08/05/2018 12:15
    Ciao,
    avrei la necessità di usare la funzione LIKE in excel, vedi esempio:

    CELLA A1
    ABABABAB MELE ABABAB (stringa qualsiasi alfanumerica)
    CELLA A2
    ABABABAB PERE ABABAB (stringa qualsiasi alfanumerica)


    CELLA B1
    SE CAMPO A1 CONTIENE "MELE" METTI "ME"; SE CAMPO A1 CONTIENE "PERE" METTI "PE"
    CELLA B2
    SE CAMPO A2 CONTIENE "MELE" METTI "ME"; SE CAMPO A2 CONTIENE "PERE" METTI "PE"

    Avrei la necessità di mettere più condizioni non solo 2.
    Come potrei fare?
    Grazie saluti.

    Fra
  • OFFLINE
    raffaele1953
    Post: 3.429
    Registrato il: 28/06/2011
    Città: AGORDO
    Età: 70
    Utente Master
    2013
    00 08/05/2018 12:50
    Per una 20° di opzioni
    Faccio un esempio scrivi in J1 =mele,J2 =Pere, J3/J4/J5 ecc ecc
    Ora in K, scrivi me, pe ecc ecc
    Adesso vai in B1 è scrivi =CERCA.VERT(A1;H1:I5;2;FALSO)
    Ora vai in alto dove vedi la formula, seleziona solo H1:I5 e premi F9
    Adesso la tabella H1:I5 la puoi cancellare

    EDIT un attimo, ho frainteso
    [Modificato da raffaele1953 08/05/2018 14:11]
    Excel 2013
  • OFFLINE
    raffaele1953
    Post: 3.430
    Registrato il: 28/06/2011
    Città: AGORDO
    Età: 70
    Utente Master
    2013
    00 08/05/2018 17:00
    Allora due soluzioni VBa oppure formula
    Sono sicuro che una matriciale sia meglio, però non sono capace
    Ricominciando da zero , se scrivi in K1 pere, k2 mele ecc ecc
    Solo se usi la formula in L metti me,pe ecc
    Valida se esiste un solo spazio tra le sigle...
    in B1 =INDICE(K1:L7;CONFRONTA(STRINGA.ESTRAI(A1;RICERCA(" ";A1;1)+1;RICERCA(CODICE.CARATT(254);SOSTITUISCI(A1;" ";CODICE.CARATT(254);LUNGHEZZA(A1)-LUNGHEZZA(SOSTITUISCI(A1;" ";""))))-RICERCA(" ";A1;1)-1);K1:K7;0);2)
    Se desideri seleziona i caratteri rossi e premi F9, dopo elimini la tabella

    il codice ci pensa lui a mettere i me,pe...
    vb
    Option Explicit
    Sub ricerca()
    Dim Parola As String, strArray() As String
    Dim Ur As Long, X As Long, Y As Long
    Ur = Range("A" & Rows.Count).End(xlUp).Row
    For X = 1 To Ur
    strArray = Split(Cells(X, 1), " ")
    For Y = LBound(strArray) To UBound(strArray)
    Parola = Trim(strArray(Y))
    If Application.WorksheetFunction.CountIf(Range("K1:K10"), Parola) > 0 Then
        Cells(X, 2) = Mid(Trim(strArray(Y)), 1, 2)
    End If
    Next Y
    Next
    End Sub
    [Modificato da raffaele1953 08/05/2018 17:01]
    Excel 2013
  • OFFLINE
    cip71
    Post: 1
    Registrato il: 22/02/2011
    Città: ROMA
    Età: 53
    Utente Junior
    2013
    00 09/05/2018 11:41
    Ciao,
    grazie per l'analisi.
    La soluzione VBA è un po ostica per le mie conoscenze, ho provato a implementare la tua formula.
    In allegato figura 1 il caso semplice dove nel campo ho messo solo il valore "MELE".
    Figura 2 è il mio caso in cui "MELE " è dentro una stringa.

    In entrambi i casi mi da errore ..
    [SM=x423021]

    Sicuramente mi sfuggirà qualcosa di enorme :-)

    Grazie, ciao.

    Fra
  • OFFLINE
    raffaele1953
    Post: 3.432
    Registrato il: 28/06/2011
    Città: AGORDO
    Età: 70
    Utente Master
    2013
    00 09/05/2018 13:00
    Scusa, hai scritto che in A1 mettevi una stringa alfanumerica, pensavo (codice nome codice)
    In A1, non puoi mettere solo la parola "mele", mà per esempio adgjfkvk MELE 4568984 (inoltre come da ex Tuo, dovrà essere in mezzo tra due codici)
    La formula ricerca all'interno di questa stringa
    (un spazio-un nome qualsiasi scritto nella tabella-un spazio)
    Inoltre la tabella deve essere scritta unicamente in K1 a seguire
    Ora se scrivi ABABABAB MELE ABABAB, la formula trova MELE
    Se invece scrivi "Comprato 15 mele ieri sera", siccome nella frase ci sono 4 spazi, la formula non capisce più nulla.
    Vedo se trovo un'altra soluzione tramite formula, secondo me rimane solo il VBA
    [Modificato da raffaele1953 10/05/2018 06:54]
    Excel 2013
  • OFFLINE
    raffaele1953
    Post: 3.436
    Registrato il: 28/06/2011
    Città: AGORDO
    Età: 70
    Utente Master
    2013
    00 10/05/2018 15:13
    Nulla da fare, non riesco proprio a fare le Matriciali
    In colonna N, riesco calcolare se è presente una parola, mà poi sono bloccato
    Nell'allegato foglio1, una stupidata con 10 colonne d'appoggio
    Nel Foglio2 il VBA
    Excel 2013
  • OFFLINE
    cip71
    Post: 2
    Registrato il: 22/02/2011
    Città: ROMA
    Età: 53
    Utente Junior
    2013
    00 11/05/2018 14:13
    Grazie mille per l'aiuto.
    Sei stato molto gentile.

    Ciao.
  • OFFLINE
    by sal
    Post: 5.378
    Registrato il: 14/11/2004
    Utente Master
    Office 2019
    00 11/05/2018 16:32
    Funzione
    Ciao una semplice Funzione per la ricerca, fatta alla buona, nel file di Raffaele che saluto

    Function Rice(rrg, ddd)
    If rrg Like "*" & ddd & "*" Then Rice = "OK"
    End Function


    allego anche il file, quello che scrivi nella cella verde viene evidenziato con "OK".

    Questa la formaula da inserire nelle celle e trascinare giù

    =Rice(A2;$K$1)
    


    Ciao By Sal [SM=x423051]


    se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
  • OFFLINE
    by sal
    Post: 5.379
    Registrato il: 14/11/2004
    Utente Master
    Office 2019
    00 11/05/2018 16:41
    Ricerca dati
    Ciao non ho letto tutto il post, ma mi sembra che voleva le iniziali della parola cercata, modifica la funzione con questa.

    Function Rice(rrg, ddd)
    Dim d
    d = Mid(ddd, 1, 2)
    If rrg Like "*" & ddd & "*" Then Rice = UCase(d)
    End Function


    Mette le prime due lettere

    Ciao By Sal [SM=x423051]

    se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
  • OFFLINE
    raffaele1953
    Post: 3.443
    Registrato il: 28/06/2011
    Città: AGORDO
    Età: 70
    Utente Master
    2013
    00 11/05/2018 17:43
    Ciao by sal
    Bella idea la Function (per chi sa scriverle)
    Il problema era trovare quale parola scritta in F1:F10 fosse presente nella cella A1. Copiandoti ho creato la mia 1° Function, brutta da vedere e da gestire. Sai come fare un ciclo all'interno di essa?
    Ho provato pure strArray() nulla, non ci riesco.
    vb
    Function Trovaaa(rrg, ddd)
    ddd = Range("K1:K5")
    If InStr(rrg, Range("K1")) > 0 Then Trovaaa = Mid(Trim(Range("K1")), 1, 2)
    If InStr(rrg, Range("K2")) > 0 Then Trovaaa = Mid(Trim(Range("K2")), 1, 2)
    If InStr(rrg, Range("K3")) > 0 Then Trovaaa = Mid(Trim(Range("K3")), 1, 2)
    If InStr(rrg, Range("K4")) > 0 Then Trovaaa = Mid(Trim(Range("K4")), 1, 2)
    If InStr(rrg, Range("K5")) > 0 Then Trovaaa = Mid(Trim(Range("K5")), 1, 2)
    End Function
    Excel 2013
  • OFFLINE
    by sal
    Post: 5.381
    Registrato il: 14/11/2004
    Utente Master
    Office 2019
    00 11/05/2018 19:38
    Funzione
    Ciao Raffaele, ce tutto un capitolo sulle funzioni e come crearle con relativi file di Help ed altro, ma purtroppo l'harddisk che le conteneva non funziona più e non ricordo più dove ho preso le informazioni.

    ma tratta la funzione, come una macro con parametri, anche con cicli interni calcoli od altro alla fine il risultato lo restituisci scrivendo il nome della funzione ed il risultato dei dati impostati.

    Ciao By Sal [SM=x423051]

    se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui