Funzione Carattere Numero o Lettera

di il
6 risposte

Funzione Carattere Numero o Lettera

Buongiorno a tutti,

sto iniziano da poco ad usare access.

ho questo problema di risolvere.

Ho una lista di codici di lunghezza variabile.
Se il codice ha meno di 15 caratteri è sicuramente un vecchio codice
se ha 15 caratteri e finisce per lettera è vecchio codice
se ha 15 caratteri e finisce con un numero è un nuovo codice
In excel ho risolto così
=SE((LUNGHEZZA(A4)=15)*VAL.NUMERO(1*DESTRA(A4;1));"Nuovo codice";"Vecchio codice")
Codice Risultato atteso Numero caratteri
025LBRC6R036304 Nuovo 15
040LSCC1R011100 Nuovo 15
050LBRA6J002000 Nuovo 15
050LBRA6J002000 Nuovo 15
050LBRA6J002000 Nuovo 15
015SPRC08TK109K Vecchio 15
025BRC06F0001K Vecchio 14
250BWR01RK001K Vecchio 14
400BVR01R0001K Vecchio 14
200BRR09J0111 Vecchio 13
050BCC03RK110 Vecchio 13
040SPRC08TK110K Vecchio 15
020SPRC03RK109K Vecchio 15
150SPCR03R0109K Vecchio 15
250BWR06R0111 Vecchio 13
080SCC01R1111K Vecchio 14
200BRR09J0111 Vecchio 13
200SPCR03R0109K Vecchio 15
100SPRR06R0110K Vecchio 15
150SPPR01R0110K Vecchio 15

6 Risposte

  • Re: Funzione Carattere Numero o Lettera

    In access puoi risolvere con la funzione IFF che , ti consente di passare l'espressione da valutare, la parte vera, la parte falsa esattamente come hai fatto in excel ovviamente devi cambiare i riferimenti delle celle ai controlli della maschera...ma hai già fatto tutto...devi solo tradurlo per access:D buona fortuna

    ps: a cosa ti serve individuare i codici vecchi e nuovi??? sei sicura che ti servano i risultati richiesti come le celle d'appoggio di excel..??? forse ti conviene spiegare meglio cosa vuoi fare e perché ti serve individuare un codice vecchio o nuovo...in questo modo troverai di certo consigli adatti alle tue esigenze
  • Re: Funzione Carattere Numero o Lettera

    In Access la funzione di cui parla CicciusPrime si chiama "IIf".
    Piuttosto che parlare di controlli di maschera, direi di usare una query con campo aggiuntivo che contempla la IIf.

    P.S.: In base al regolamento del forum, attribuire un titolo coerente con l'argomento trattato. Quel titolo non va bene.
  • Re: Funzione Carattere Numero o Lettera

    OsvaldoLaviosa ha scritto:


    In Access la funzione di cui parla CicciusPrime si chiama "IIf".
    Piuttosto che parlare di controlli di maschera, direi di usare una query con campo aggiuntivo che contempla la IIf.
    mi è scappata la F:D
  • Re: Funzione Carattere Numero o Lettera

    Per la formula IIF ok...
    apro la funzione con IIF poi...
    - il primo passaggio da fare è contare il numero di caratteri... e qui userei la funzione LEN
    - il secondo passaggio da fare è verificare se l'ultimo carattere è una lettera o un numero.. esiste qualche funzione in merito?
  • Re: Funzione Carattere Numero o Lettera

    Premesso che devi imparare a trovare l'elenco delle funzioni disponibili e provare a cercare quelle che possono adattarsi alla tua esigenza.......!!!

    IIF non serve credo... se non per la definizione finale.
    L'ultima parte viene sempre dopo l'ultimo spazio...?
    025LBRC6R036304 Nuovo 025LBRC6R036304 Nuovo 15

    In tal caso individui il punto con la funzione ISTRREV(...) passando la stringa ed il carattere da cercare, lo Spazio nel tuo caso.
    Il numero redtituito+1 sarà l'inizio del carattere del pezzo finale che recuperi con MID$(stringa, inizio,lunghezza).
    Poi per sapere se è un numero usi la funzione IsNumeric(...) ma prima accertati di aver rimosso eventuali spazi con replace(stringa, " ","")

    Qui trovi le guide, la ricerca con google è semplice anche dalla guida preinstallata in Access:

    https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/instrrev-function

    https://support.microsoft.com/it-it/office/funzione-mid-427e6895-822c-44ee-b34a-564a28f2532c?ui=it-it&rs=it-it&ad=it

    https://docs.microsoft.com/it-ch/office/vba/language/reference/user-interface-help/isnumeric-function
  • Re: Funzione Carattere Numero o Lettera

    Il campo si chiama [A4]: giusto?
    Sicuramente c'è un modo più elegante per valutare se l'ultimo carattere è numerico o testo (@Alex suggerisce IsNumeric). Io parto dal presupposto che 0-9 viene sempre prima di A-Z, quindi prova questa:
    IIf((Len([A4])=15) And (Right([A4];1) Between "0" And "9");"Nuovo codice";"Vecchio codice")
    altrimenti meglio questa:
    IIf(Len([A4])=15 And IsNumeric(Right([A4];1);"Nuovo codice";""Vecchio codice")
Devi accedere o registrarti per scrivere nel forum
6 risposte