Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Umwandlung dezimal in Alphanumerisch

Umwandlung dezimal in Alphanumerisch
24.08.2004 07:26:44
Jochen
Hallo zusammen,
ich habe folgendes Problem, ich habe eine Stapelverarbeitung von Dateien (Meßwerte) geschrieben. Bislang hatten die Dateien eine fortlaufende Nummer, doch nun ist der Zähler Alphanumerisch. Soll heißen, daß meine Dateien nicht von "0" bis "150" nummeriert sind, sondern von "0" - "9" und dann weiter von "a" - "z". Danach geht es weiter mit "10" - "19", dann "1a" - "1z" usw ...
Kann mir jemand helfen, wie ich mein Skript (s.u.) entsprechend anpassen kann?
For e = 1 To 150
If e &lt 10 Then Dateiname = "Testdaten" + "000" + e + ".xls"
If e &gt= 10 Then Dateiname = "Testdaten" + "00" + e + ".xls"
If e &gt= 100 Then Dateiname = "Testdaten" + "0" + e + ".xls"
If e &gt= 1000 Then Dateiname = "Testdaten" + e + ".xls"
Danke und Gruß
Jochen
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Umwandlung dezimal in Alphanumerisch
24.08.2004 08:18:13
Harald
Hallo Jörg,
Du machst im Prinzip eine Umwandlung aus dem Dezimalsystem in ein System auf der Basis 36 (0-9 + 26 Zeichen des Alphabets):
Sub test()
Dim basis As Integer
Dim rest As Integer
Dim x As Integer, y As Integer
Dim ergebnis As String
basis = 10 + (Asc("z") - Asc("a") + 1)
ergebnis = ""
x = InputBox(">")
y = x
Do
rest = x Mod basis
ergebnis = zeichen(rest) & ergebnis
x = x \ basis
Loop Until x = 0
Do While Len(ergebnis) ergebnis = "0" & ergebnis
Loop
MsgBox y & " -> " & ergebnis
End Sub

Private Function zeichen(x As Integer) As String
If x < 10 Then
zeichen = Chr(Asc("0") + x)
Else
zeichen = Chr(Asc("a") + x - 10)
End If
End Function

Gruß Harald
Anzeige
AW: Umwandlung dezimal in Alphanumerisch
JRobert
Hallo Jochen,
noch ein paar Functionen,die auf Basis von Harald aufgebaut sind:
Public Function Decode10to36(zahlstring As String) As String
Dim Zahl As Long, tmpstr As String
Dim rest As Integer
tmpstr = ""
Zahl = CLng(zahlstring)
basis = 10 + (Asc("z") - Asc("a") + 1)
Do Until Zahl = 0
rest = Zahl Mod basis
tmpstr = zeichen(rest) + tmpstr
Zahl = (Zahl - rest) / basis
Loop
Decode10to36 = tmpstr
End Function
'----------------------------------
Public Function Decode36to10(zahlstring As String) As String
Dim lenstr As Integer
Dim Zahl As Long
lenstr = Len(zahlstring)
basis = 10 + (Asc("z") - Asc("a") + 1)
Zahl = 0
For i = 1 To lenstr
tmpchar = Mid(zahlstring, lenstr - i + 1, 1)
If Not IsNumeric(tmpchar) Then
Zahl = Zahl + CLng(10 + (Asc(tmpchar) - Asc("a"))) * basis ^ (i - 1)
Else: Zahl = Zahl + CLng(tmpchar) * basis ^ (i - 1)
End If
Next i
Decode36to10 = Str(Zahl)
End Function

Private Function zeichen(x As Integer) As String
If x < 10 Then
zeichen = Chr(Asc("0") + x)
Else
zeichen = Chr(Asc("a") + x - 10)
End If
End Function

'------------------------------------------
'gibt nächte Zahl in 36_Basis
Public Function GetNext36Zahl(ZahlIn36Basis As String)
Dim Zahl10 As Long
GetNext36Zahl = Decode10to36(Str(CLng(Decode36to10(ZahlIn36Basis)) + 1))
End Function
grüß Robert
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige