Ciao *anonimo* Tonella
qual'è la regola che lega il dato numerico a quello alfanumerico?
Esiste un solo dato da convertire?
Roberto (IW1ERL)
Function decimalizza(stringa As String) As Double
If stringa = "" Then Exit Function
Dim lu As Integer
Dim u As Double
Dim x As Integer, a As Integer
Dim s As String
Dim no As Boolean
Dim d As Double
lu = Len(stringa)
u = 1
For x = lu To 1 Step -1
s = Mid(stringa, x, 1)
Select Case s
Case "0" To "9"
a = Asc(s) - 48
Case "A" To "Z"
a = Asc(s) - 55
Case "a" To "z"
a = Asc(s) - 87
Case Else
no = True
End Select
d = d + u * a
u = u * 36
Next x
If no Then Exit Function
decimalizza = d
End Function
ed una stringa tipo "3Z7QJ" me la trasforma in "6681835"
Si può fare una funzione che ritrafsormi "6681835" in "3Z7QJ"?
--
cià, Tonella
"rober...@yahoo.com" ha scritto:
Ciao Tonella
ho chiesto la regola e mi sono sentito in *dovere* di trovare una
soluzione.
Ora gli esperti del gruppo mi bacchetteranno sonoramente perchè manca
la dichiarazione delle variabili.
Note:
1) valida solo per numeri generati da stringhe iniziali di 5 caratteri
2) poichè sia con caratteri alfabetici minuscoli che maiuscoli
contenuti nella stringa iniziale il numero generato è lo stesso non è
possibile rigenerare la stringa iniziale *identica*. La funzione
genera stringhe con caratteri maiuscoli
Function stringhizza(numero)
If numero = 0 Then Exit Function
For x = 4 To 0 Step -1
alfa = Int(numero / 36 ^ x)
If alfa < 10 Then
u = 48
Else
u = 55
End If
valore = alfa + u
finale = finale & Chr(valore)
numero = numero - (alfa * 36 ^ x)
Next x
stringhizza = finale
End Function
Spero ti sia utile
Roberto (IW1ERL)