Excel e gli applicativi Microsoft Office cella con convalida di numeri e lettere

Login Registrati
Stai vedendo 16 articoli - dal 1 a 16 (di 16 totali)
  • Autore
    Articoli
  • #23263 Score: 0 | Risposta

    inghe05
    Partecipante

      Buongiorno e grazie in anticipo per ciò che potrete fare.

      Ho la necessità che in una cella sia obbligatorio digitare un codice di tre numeri e tre lettere. Es. 123abc. In questo preciso ordine, per un totale di 6 lettere. Ho pensato di usare il comando Convalida con la seguente formula posta in "Personalizzato": 

      =E(VAL.NUMERO(VALORE(SINISTRA(A13;3)));VAL.TESTO(DESTRA(A13;3));LUNGHEZZA(A13)=6).

      Viene controllata la lunghezza correttamente, viene impedito di scrivere lettere iniziali, ma si riesce comunque a scrivere 6 numeri. 

      L'alternativa è di mettere le lettere in una cella e i numeri nell'altra e poi usare la convalida per affiancarli ma volevo sapere se è possibile evitare questa soluzione.

      Grazie mille.

      I.

      #23264 Score: 0 | Risposta

      PMC77
      Partecipante
        18 pts

        Secondo me la tua idea è buona, ma andrebbe modificata la condizione...

        Per i numeri ---> ">= 000" & "<= 999"

        Per i caratteri --> ">= aaa" & "<= zzz"

        Ovviamente sempre con la tua convalida dati

        #23270 Score: 0 | Risposta

        inghe05
        Partecipante

          Grazie del suggerimento,

          intendevi:

          =E(VAL.NUMERO(VALORE(SINISTRA(A13;3)))=">= 000" & "<=999";VAL.TESTO(DESTRA(A19;3))=">= aaa" & "<= zzz")?

          così però non mi funziona.

          grazie

          #23280 Score: 0 | Risposta

          D@nilo
          Partecipante
            12 pts

            Buonasera

            aggiungi la parte in rosso alla tua formula

            =E(VAL.NUMERO(VALORE(SINISTRA(A13;3)));VAL.TESTO(DESTRA(A13;3));LUNGHEZZA(A13)=6;NON(VAL.NUMERO(A13)))

            #23283 Score: 0 | Risposta

            Mister_x
            Partecipante
              11 pts

              ciao

              e se usassimo una UDF  per formattazione condizionale ??

              da inserire in un modulo di classe

              Option Explicit
              Function NNNTTT(Stringa As String) As Boolean
              Dim cs As Long
              Dim Sec As Boolean
              Dim A_sc As String
              cs = 1
              If Len(Stringa) = 6 Then
              For i = 1 To 6
              A_sc = Mid(Stringa, i, 1)
               If cs <= 3 Then
                 If Asc(A_sc) >= 48 And Asc(A_sc) <= 57 Then
                  Sec = True
                  cs = cs + 1
                 Else
                  Sec = False
                  Exit For
                 End If
               Else
                 If Asc(A_sc) >= 65 And Asc(A_sc) <= 122 Then
                   Sec = True
                 Else
                  Sec = False
                  Exit For
                 End If
               End If
              Next i
               Else
                Sec = False
               End If
              NNNTTT = Sec
              End Function
              

              in FC basta inserire la seguente stringa  =NNNTTT(A1)=FALSO  e mettere un colore

              allego il file di prova per verifica

               

              Allegati:
              You must be logged in to view attached files.
              #23287 Score: 0 | Risposta

              inghe05
              Partecipante

                grazie a tutti, ho provato quanto suggerito da D@anilo e mi va benissimo. Viste le mie limitate conoscenze mi puoi dare qualche indicazione sullo scopo di Non (Val.Numero..? i tre argomenti precedenti restituivano tutti VERO come risultato.

                Per quanto riguarda la risposta di Mister X, non ho conoscenze di VBA ma il mio scopo è di obbligare a scrivere un codice corretto non dievidenziare ciò che già di sbagliato c'è, cosa che fa la formattazione condizionale, ovviamente posso aver frainteso completamente il tuo suggerimento.

                Comunque grazie mille a tutti.

                #23288 Score: 0 | Risposta

                D@nilo
                Partecipante
                  12 pts

                  Ciao

                  La formula che avevi scritto controllava che i primi tre caratteri erano numeri che i secondi tre erano testi e che la lunghezza Max consentita era 6 Ora ti faceva inserire sei numeri con il quarto criterio gli dico:se i dati sono numeri restituisci FALSO...come? Se scrivi

                   

                  VAL.NUMERO(A13)   se in cella A13 metti 6 numeri ti restituisce VERO noi abbiamo bisogno del FALSO per impedirel''inserimento quindi metti tutto dentro la funzione NON che trasforma i veri in FALSO e viceversa

                  #23290 Score: 0 | Risposta

                  Mister_x
                  Partecipante
                    11 pts

                    ciao

                    due spiegazioni in base alla domanda fatta da te di valutare una stringa formata dai primi tre caratteri numerici

                    0-9  i secondi tre alfabetici A-z   (  123abc )

                    quindi se passiamo in questo caso la valutazione alla formula di Danilo , che saluto , questa restituisce VERO ed anche la NNNTTT() restituisce VERO   ma se diamo la verifica ad una stringa di testo del tipo

                    ( 123a9c ) la prima restituisce sempre VERO in quanto 123 numerico  a9c alfabetico , mentre NNNTTT() ti restituisce FALSO in quanto rileva un numero al suo interno  ( a 9<numerico  c  ) e non tutti valori alfabetici 

                    in questo caso sta a te valutare se la stringa si puo' definire VERA o FALSA

                    quindi se dobbiamo valutare 3 numeri e 3 alfabetici bisogna scrivere una formula un pochino differente

                    ti ripasso il file con le due formule di valutazione alla cella A13 per farti capire la differenza

                    ciao  

                    PS  oggi provo a implementare una formula con questa di valutazione

                    Allegati:
                    You must be logged in to view attached files.
                    #23292 Score: 0 | Risposta

                    scossa
                    Partecipante
                      37 pts

                      Ciao,

                      D@nilo ha scritto:

                      La formula che avevi scritto controllava che i primi tre caratteri erano numeri che i secondi tre erano testi e che la lunghezza Max consentita era 6 Ora ti faceva inserire sei numeri con il quarto criterio gli dico:se i dati sono numeri restituisci FALSO...come? Se scrivi

                      In realtà la tua formula consente di inserire anche stringhe come 123ab4 o 123ab# ...

                      Una possibile alternativa, che non convalida le stringhe del tipo citato sopra:

                      =E(LUNGHEZZA(A13)=6;VAL.NUMERO(--SINISTRA(A13;3));STRINGA.ESTRAI(A13;{4\5\6};1) >= "a")

                      ammette però le lettere accentate. Se fosse un problema si può modificare utlizzando la funzione Codice e complicando un po' la formula.

                      Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)
                      #23293 Score: 0 | Risposta

                      D@nilo
                      Partecipante
                        12 pts

                        Buonasera

                        la soluzione di Scossa....risulta più funzionale

                         

                        Saluti

                        #23296 Score: 0 | Risposta

                        inghe05
                        Partecipante

                          grazie a tutti delle spiegazioni.

                          Ho provato ad inserire quanto suggerito da Scossa ma mi dice che "non è possibile usare operatori di riferimento o costanti di matrice per i criteri di convalida dati".

                          Non riesco quindi a portarlo a termine.

                          i.

                          #23297 Score: 0 | Risposta

                          D@nilo
                          Partecipante
                            12 pts

                            Ciao

                            la puoi modificare cosi

                             

                            =E(LUNGHEZZA(A13)=6;VAL.NUMERO(--SINISTRA(A13;3));STRINGA.ESTRAI(A13;RIF.RIGA(4:6);1)>="a")

                            #23298 Score: 0 | Risposta

                            scossa
                            Partecipante
                              37 pts

                              inghe05 ha scritto:

                              Ho provato ad inserire quanto suggerito da Scossa ma mi dice che "non è possibile usare operatori di riferimento o costanti di matrice per i criteri di convalida dati".

                              scusate, ho stupidamente preso in considerazione solo la formula, senza considerare che doveva essere usata nell F.C..

                              Ottima la correzione proposta da Danilo.

                              Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)
                              #23300 Score: 0 | Risposta

                              Mister_x

                                ciao

                                scusate  ma ho fatto delle prove e anche con l'ultima di Danilo , se metto nella cella A13 un testo cosi  ( 123a3c ) mi ritorna sempre un VERO   mentre se analizzo la sequenza dovrebbe ritornare FALSO in quanto e' inserito tra a e c un valore 3, quindi da come la vedo bisogna analizzare tutte le lettere separatamente, 

                                questo pero se facciamo una verifica in una cella e confermiamo la formula come matriciale il ritorno e' esatto FALSO , ma in un FC non possiamo inserire una formula matriciale, e quindi viene preso in considerazione solo il 4° carattere (  123a3c )

                                ciao da Mister_x

                                 

                                 

                                #23302 Score: 0 | Risposta

                                Mister_x

                                  riciao

                                  una possibile soluzione modificando la formula di danilo.

                                  =E(LUNGHEZZA(A13)=6;VAL.NUMERO(--SINISTRA(A13;3));STRINGA.ESTRAI(A13;4;1)>="a";STRINGA.ESTRAI(A13;5;1)>="a";STRINGA.ESTRAI(A13;6;1)>="a")

                                  quindi possiamo in questo caso in FC inserire questa

                                  =E(LUNGHEZZA(A13)=6;VAL.NUMERO(--SINISTRA(A13;3));STRINGA.ESTRAI(A13;4;1)>="a";STRINGA.ESTRAI(A13;5;1)>="a";STRINGA.ESTRAI(A13;6;1)>="a")=FALSO      e dare un riferimento alla cella 

                                  riciao

                                  #23303 Score: 0 | Risposta

                                  inghe05
                                  Partecipante

                                    scusate ma ho provato a fare la convalida come suggerito da D@anilo e per me funziona. Ossia digitando 123a3c vengo bloccata.

                                    i.

                                  Login Registrati
                                  Stai vedendo 16 articoli - dal 1 a 16 (di 16 totali)
                                  Rispondi a: cella con convalida di numeri e lettere
                                  Gli allegati sono permessi solo ad utenti REGISTRATI
                                  Le tue informazioni: