Check di controllo

di il
4 risposte

Check di controllo

Ciao a tutti! Vorrei chiedervi un aiuto perchè sto letteralmente impazzendo! Sto realizzando un foglio Excel che faccia dei check di controllo su alcuni dati! Quello che vi chiedo è esattamente il seguente: io ho dei codici che possono essere composti o da 3 o da 4 codici alfanumerici. Questi però a volte possono anche essere cosituiti da 5 lettere, questo accade però solo quando finiscono con N1,N2,N3,R1,R2,R3.
Per realizzare questo per ognuno dei seguenti codici ho fatto il seguente codice:
=SE(O(LUNGHEZZA(L2)=3;LUNGHEZZA(L2)=4);"ok";SE(E(LUNGHEZZA(L2)=5;CONTA.SE(LIST!$AR$3:$AR$8;DESTRA(L2;2)=0));"Nok";"ok"))
Solamente che così non viene fatto alcun controllo ma viene scritto "ok" qualunque sia il codice presente.

P.S. in "LIST!$AR$3:$AR$8" è presente l'elenco di N1,N2,N3,R1,R2,R3.

4 Risposte

  • Re: Check di controllo

    Descrizione troppo confusa: esistono "oggetti" elementari (caratteri alfabetici, cifre, simboli) e composti (stringhe, codice, etc). Non è chiaro come siano composti i "codici" di cui parli. Posta un esempio concreto. Puoi usare lo "Strumento di cattura" di winzozz per postare un'immagine.
    Un suggerimento: quando hai una formula complessa prova a romperla in pezzi, uno per colonna, in modo da vedere i risultati singoli.
  • Re: Check di controllo

    I criteri di controllo sono:
    Il codice può avere 3 o 4 caratteri
    deve iniziare con una lettera
    il 2 e 3 carattere sono dei numeri
    può avere un quarto carattere, per forza una lettera
    e può avere anche il 5 carattere, ma quando esiste il 5 carattere, allora necessariamente le ultime due cifre del codice possono essere solo N1,N2,N3,R1,R2,R3

    Quello che non riesco è a fare quest'ultimo controllo.

    Posto una foto che spero possa essere abbastanza esplicativa:
    Cattura.PNG
    Cattura.PNG

    Per ora tramite il codice:
    =SE(E(LUNGHEZZA(L2)=3;LUNGHEZZA(L2)=4);"ok";SE(E(LUNGHEZZA(L2)=5;CONTA.SE(LIST!$AR$3:$AR$8;DESTRA(L2;2))=1);"ok";"Nok"))
    Sono riuscito ad ottenere "ok" dove le ultime due cifre (quando il codice ha 5 caratteri) sono corrette, presenti nella lista:
    relaz.PNG
    relaz.PNG

    pero ottengo i "Nok" in tutti gli altri senza volerlo, vorrei ottenre "ok" quando sono 3 o 4 caratteri. Non riesco a capire come mai non possa funzionare.

    N.B. la cella L2 corrisponde al codice da analizzare
  • Re: Check di controllo

    Ricky994 ha scritto:


    I criteri di controllo sono:
    Il codice può avere 3 o 4 caratteri
    No: il codice può essere LUNGO 3 o 4 caratteri. Anche se questo contraddice quanto scrivi dopo: la lunghezza del codice può essere tra 3 e 5 caratteri.
    deve iniziare con una lettera
    il 2 e 3 carattere sono dei numeri
    può avere un quarto carattere, per forza una lettera
    e può avere anche il 5 carattere, ma quando esiste il 5 carattere, allora necessariamente le ultime due cifre del codice possono essere solo N1,N2,N3,R1,R2,R3
    Confondi i "numeri" con le "cifre"!!
    E poi confondi le cifre con dei caratteri alfanumerici! Molto male...
    Per ora tramite il codice:
    =SE(E(LUNGHEZZA(L2)=3;LUNGHEZZA(L2)=4);"ok";SE(E(LUNGHEZZA(L2)=5;CONTA.SE(LIST!$AR$3:$AR$8;DESTRA(L2;2))=1);"ok";"Nok"))
    Formula sbagliata: non tiene conto, tra l'altro, del caso che il 3° o 4° carattere non siano cifre.
    Il problema è che non puoi usare la funzione "conta.se" in quel modo con un parametro "zona".
    Io farei in modo diverso:
    - in una cella compongo una lista di quei famosi codici di due caratteri, separandoli con una virgola (ad esempio);
    - uso la funzione "ricerca" per cercare se vi siano i caratteri 4° e 5° (stringa.estrai) nella lista.

    Ovviamente devi completare il controllo con le altre condizioni.
    SPEZZA la formula in più celle... almeno per cominciare.
  • Re: Check di controllo

    nicolap ha scritto:


    No: il codice può essere LUNGO 3 o 4 caratteri. Anche se questo contraddice quanto scrivi dopo: la lunghezza del codice può essere tra 3 e 5 caratteri.
    Può averne 5 solo quando gli ultimi due caratteri sono N1,N2,N3,R1,R2,R3

    Formula sbagliata: non tiene conto, tra l'altro, del caso che il 3° o 4° carattere non siano cifre.
    Il problema è che non puoi usare la funzione "conta.se" in quel modo con un parametro "zona".
    Io farei in modo diverso:
    - in una cella compongo una lista di quei famosi codici di due caratteri, separandoli con una virgola (ad esempio);
    - uso la funzione "ricerca" per cercare se vi siano i caratteri 4° e 5° (stringa.estrai) nella lista.

    Ovviamente devi completare il controllo con le altre condizioni.
    SPEZZA la formula in più celle... almeno per cominciare.
    Del fatto che il 3 ed il 4 carattere debbano essere delle cifre ne tengo conto in un altro check, in questo volevo solo far si che se il codice ha 5 cifre le ultime due cifre devono essere obbligatoriamente N1,N2,N3,R1,R2,R3.

    Comunque dopo alcune peripezie ho risolto con questo codice:
    =SE(O(LUNGHEZZA(L106)=3;LUNGHEZZA(L106)=4);"ok";SE(E(LUNGHEZZA(L106)=5;CONTA.SE(LIST!$AR$3:$AR$8;DESTRA(L106;2))=1);"ok";"Nok"))

    Però colgo l'occasione per chiedere un parere su un altro tipo di controllo che devo fare. Dovrei controllare se il codice, (solo quando ha 4 cifre) finisce con una lettera presente in un elenco, ma quando questo codice inizia con la lettera "Q" può finire anche con un elenco di lettere diverse. Io ho provato con questo codice ma non funziona come dovrebbe:
    =SE(O(E(CONTA.SE(LIST!$AT$2:$AT$21;DESTRA(L2;1))=0;LUNGHEZZA(L2)=4);E(LUNGHEZZA(L2)=4;SINISTRA(L2;1)="Q";CONTA.SE(LIST!$AW$2:$AW$21;DESTRA(L2;1))=0));"Nok";"ok")
Devi accedere o registrarti per scrivere nel forum
4 risposte