come modificare/cambiare/convertire una stringa di numeri in lettere e viceversa

Anonimo
2023-01-17T08:06:47+00:00

buongiorno,

devo rendere un numero di 10/15 cifre molto più corto e per questo ho pensato di "trasformarlo" in lettere.

come posso farlo?

es.

1=A

2=B

3=C

...

26=Z

27=AA

28=AB

GRAZIE

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

11 risposte

Ordina per: Più utili
  1. Gianfranco55 25,270 Punti di reputazione Moderatore volontario
    2023-01-17T14:34:57+00:00

    ciao

    vediamo in A1 il numero

    creo la matrice lettere

    =SOSTITUISCI(SE.ERRORE(INDIRIZZO(1;SINISTRA(A1;4);4);"")&" "&SE.ERRORE(INDIRIZZO(1;STRINGA.ESTRAI($A$1;5;4);4);"")&" "&SE.ERRORE(INDIRIZZO(1;STRINGA.ESTRAI($A$1;9;4);4);"")&" "&SE.ERRORE(INDIRIZZO(1;STRINGA.ESTRAI($A$1;13;4);4);"");1;"")

    torno indietro

    365

    =TESTO.UNISCI(;VERO;SE.ERRORE(RIF.COLONNA((INDIRETTO(FILTRO.XML("<d><a>"&SOSTITUISCI(C1;" ";"</a><a>")&"</a></d>";"//a["&{1\2\3\4}&"]")&1)));""))

    altre versioni

    =ANNULLA.SPAZI(SE.ERRORE(RIF.COLONNA(INDIRETTO(FILTRO.XML("<d><a>"&SOSTITUISCI(C1;" ";"</a><a>")&"</a></d>";"//a[1]")&1));"")&SE.ERRORE(RIF.COLONNA(INDIRETTO(FILTRO.XML("<d><a>"&SOSTITUISCI(C1;" ";"</a><a>")&"</a></d>";"//a[2]")&1));"")&SE.ERRORE(RIF.COLONNA(INDIRETTO(FILTRO.XML("<d><a>"&SOSTITUISCI(C1;" ";"</a><a>")&"</a></d>";"//a[3]")&1));"")&SE.ERRORE(RIF.COLONNA(INDIRETTO(FILTRO.XML("<d><a>"&SOSTITUISCI(C1;" ";"</a><a>")&"</a></d>";"//a[4]")&1));""))

    986986989654 NOO LVN NGH 986986989654
    986986989654

    https://www.dropbox.com/s/6yr2jdjwy2q257s/da%20numero%20a%20lettere%20colonna%20e%20viceversa.xlsx?dl=0

    ma con il vba mi piace di più

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2023-01-17T14:21:31+00:00

    Ciao Sara,

    ho provato a seguire le Sue istruzioni ma devo essere negata perchè non ottengo nessun risultato.

    Prova a scaricare ilo mio file di prova Sara20230117.xlsm che dimostra l'uso della funzione.

      [![](https://learn-attachment.microsoft.com/api/attachments/104604bc-209f-4d4b-821c-4f25b319e86c?platform=QnA
    

    con il suo codice è possibile anche tornare dalle lettere ai numeri?

    Nel modo in cui la funzione è attualmente scritta, non riesco a pensare a nessun modo in cui si possa riconvertire il codice al numero originale.

    Potrei forse essere in grado di scrivere il codice in modo diverso in modo che il numero originale possa essere restituito dal codice risultante ma, prima ancora di considerare questo, penso che dovresti spiegare in dettaglio, possibilmente con un file di esempio, perché hai bisogno per eseguire qualsiasi conversione. Può ben darsi che tale spiegazione possa generare un approccio alternativo.

    ===

    Regards,

    Norman

    Immagine

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2023-01-17T13:31:50+00:00

    buonasera Norman,

    ho provato a seguire le Sue istruzioni ma devo essere negata perchè non ottengo nessun risultato.

    con il suo codice è possibile anche tornare dalle lettere ai numeri?

    grazie

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2023-01-17T11:56:08+00:00

    Ciao Sara, ciao Gianfranco,

    Data la valida critica alla mia funzione originale, per gestire un numero fino a 15 (o più) cifre, sostituisci il mio codice precedente con la seguente versione:

    '========>>

    Option Explicit

    '-------->>

    Public Function MyCode(ByVal MyNumber As Variant) As String

    Dim I As Variant, j As Variant 
    
    Dim iLen As Long 
    
    iLen = Len(MyNumber) 
    
    If iLen &gt; 9 Then 
    
        I = CLng(Left(MyNumber, 9)) 
    
        j = CLng(Mid(MyNumber, 10, 99)) 
    
    End If 
    
    Do While I &gt; 0 
    
        I = I - 1 
    
        MyCode = ChrW$(65 + I Mod 26) & MyCode 
    
        I = I \ 26 
    
    Loop 
    
    If Len(j) Then 
    
        Do While j &gt; 0 
    
            j = j - 1 
    
            MyCode = ChrW$(65 + j Mod 26) & MyCode 
    
            j = j \ 26 
    
        Loop 
    
    End If 
    

    End Function

    '<<========

    ===

    Regards,

    Norman

    Immagine

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Gianfranco55 25,270 Punti di reputazione Moderatore volontario
    2023-01-17T10:58:24+00:00

    ciao

    io ho concatenato ogni 4 numeri la stringa numerica

    perchè 4 e non di più

    perchè le colonne di excel sono 16.384

    e se solo estraessi anche 5 numeri rischierei di no avere riscontro esempio 16450

    ecco il motivo delle 4 lettere.

    risultato mi da ALK che se vado di nuovo a selezionare le colonne e cercando ALK mi da come risultato 999 colonne selezionate. come mai?

    ho poi diviso per 10 per avere meno lettere possibili..ma non è necessario

    per tornare indietro si semplificherebbe tutto se potessimo separare

    con una - le varie concatenazioni

    altrimenti è un bel caos e ci vuole un funzione

    prova

    =SOSTITUISCI(SE.ERRORE(INDIRIZZO(1;SINISTRA(A1;4);4);"")&" "&SE.ERRORE(INDIRIZZO(1;STRINGA.ESTRAI($A$1;5;4);4);"")&" "&SE.ERRORE(INDIRIZZO(1;STRINGA.ESTRAI($A$1;9;4);4);"")&" "&SE.ERRORE(INDIRIZZO(1;STRINGA.ESTRAI($A$1;13;4);4);"");1;"")

    comunque passi da 4 numeri a tre lettere la maggior parte dei casi

    ne vale la pena

    😉

    che versione hai di excel

    La risposta è stata utile?

    0 commenti Nessun commento