AW: Alphanumerische Zeichenfolge in einer Zelle zu strukturieren
05.01.2024 18:33:18
Daniel
HI
könnte schwierig werden.
wenn das direkt bei der Eingabe erfolgen soll, muss es auf jeden Fall mit VBA programmiert werden.
Beispielsweise mit diesem Makro im Modul des Tabellenblatts.
als "Gültigkeitsbereich" gibst du an, in welchem Zellbereich die Umwandlung durchgeführt werden soll
"x" ist die Blocklänge, also nach wieviel Zeichen das "-" eingefügt wird.
Einfügeregel ist analog Tausendertrennzeichen (also von rechts gezählt)
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zelle As Range
Dim txt1 As String
Dim txt2 As String
Dim i As Long
Dim Gültigkeitsbereich As Range
Const x As Long = 3
Set Gültigkeitsbereich = Range("A:A")
If Not Intersect(Target, Gültigkeitsbereich) Is Nothing Then
For Each Zelle In Intersect(Target, Gültigkeitsbereich)
txt1 = Replace(Zelle.Text, "-", "")
i = Len(txt1) Mod x
If i = 0 Then i = x
txt2 = Left(txt1, i)
For i = i + 1 To Len(txt1) Step x
txt2 = txt2 & "-" & Mid(txt1, i, x)
Next
Application.EnableEvents = False
Zelle.Value = txt2
Application.EnableEvents = True
Next
End If
End Sub
Sortiert wird das ganze immer als Text, entscheidend ist immer das erste unterschiedliche Zeichen von links.
Eine Sortierung analog Zahlen mit berücksichtigung der Größe (also hier Textlänge) funktioniert nicht.
dazu müssten dann noch alle Zeichen mit Leerzeichen auf die gleiche Länge aufgefüllt werden.
das wäre dann: mit dieser Zeile möglich, hier für 20 Zeichen:
Zelle.Value = right(String(20, " ") & txt2, 20)
Gruß Daniel