Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1204to1208
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Gliederungsnummern umwandeln

Gliederungsnummern umwandeln
DirkR
Hallo Excelgemeinde,
ich habe folgendes Problem, bei dem ich Hilfe brauche.
Ich habe in einer Tabelle sehr viele Daten. Diese haben in der Spalte G eine Gliederungsnummer.
z.B.: 5.1.1.2 oder auch 5.10
Maximal sind es aber 4 Stellen. Wenn ich nun einen neuen Artikel in die Tabelle aufnehme, dann würde ich diese gerne anschließend sortieren. Dann habe ich aber leider die Artikelnummer 5.10 vor dem Artikel 5.2 und das soll nicht sein. Meine Idee ist es nun, in einer anderen Spalte eine Zuordnungsnummer automatisch zu generieren. Am besten wäre es, wenn das Ergebnis dann so aussehen würde:
Aus 5.1.1.2 soll 005001001002 werden und aus 5.10 soll 005010000000 werden. Alle 4 Stellen zwischen den Punkten würden somit wiederum 3 Stellen erhalten
Dann kann ich die Tabelle sortieren. Ich möchte gerne, dass ganze in VBA, damit ich das ganze dann im Ereignis: Private Sub Worksheet_Change(ByVal Target As Range) einbauen kann.
Ich hoffe, ich habe es nicht zu umständlich erklärt.?
Ich hoffe auf eure Hilfe!!!!
Gruß Dirk

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Workaround : Format '00\.00\.00\.00'
18.03.2011 11:03:12
NoNet
Hallo Dirk,
versuche mal folgendes :
Markiere die Zellen und formatiere sie mit folgendem benutzerdefinierten Format : 00\.00\.00\.00
Nun musst Du die Nummern zwar immer 8-stellig eingeben (z.B. 05010102 für 5.1.1.2) aber dafür stimmt anschliessend die Sortierung.
Gruß, NoNet
AW: Workaround : Format '00\.00\.00\.00'
18.03.2011 11:14:41
DirkR
Hallo NoNet,
danke für deine Antwort. Leider muss ich mich an das Eingabeformat halten. wie z.B.: 5.10.4
Genau das ist ja mein Problem. Ich möchte alle Gliederungsnummern in einer anderen Spalte kopieren und umwandeln in eine zahl, damit ich dann anhand der Zahlen die Tabelle sortieren kann.
Ich hätte gerne 4 3er Blöcke (Ziffern) als Zuordnung.
Beispiele:
5.12 = 005012000000
16.2.3.1 = 016002003001
1.1 = 001001000000
4.123.1 = 004123001000
Ich versuche nun schon den ganzen Tag dieses in den Griff zu bekommen..... leider gelingt es mir nicht!!!
Gruß Dirk
Anzeige
AW: Gliederungsnummern umwandeln
18.03.2011 11:21:09
Rudi
Hallo,
in die Tabelle:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 7 And Target.Count = 1 Then
If Target  "" Then
Application.EnableEvents = False
With Target.Offset(, 1)
.NumberFormat = "@"
.Value = MeineNummer(Target)
End With
Application.EnableEvents = True
End If
End If
End Sub
in ein Modul

Function MeineNummer(strNummer)
Dim arrtmp, i As Integer
arrtmp = Split(strNummer, ".")
For i = 0 To UBound(arrtmp)
MeineNummer = MeineNummer & Format(arrtmp(i), "000")
Next
MeineNummer = Left(MeineNummer & String(12, "0"), 12)
End Function
Gruß
Rudi
Anzeige
AW: Gliederungsnummern umwandeln
18.03.2011 17:50:39
DirkR
Hallo Rudi,
genau das habe ich gesucht. Vielen Dank, super!!!!!
Gruß Dirk
... was lange währt:
18.03.2011 13:06:02
Marc
<pre>Sub struktur_aufschlüsseln()
Set rng = Range("G:G").SpecialCells(xlCellTypeConstants)
Range("A3:E7,H3:J7").ClearContents
For Each zell In rng
'Strukturtiefe ermitteln
trennpunkte = Len(zell.Value) - Len(Replace(zell.Value, ".", ""))
erste = InStr(1, zell.Value, ".")
zweite = InStr(erste + 1, zell.Value, ".")
dritte = InStr(zweite + 1, zell.Value, ".")
If trennpunkte = 1 Then
Cells(zell.Row, 8) = Format(Left(zell.Value, erste - 1), "'000 ") & _
Format(Mid(zell.Value, erste + 1), "000 ") & _
Format(0, "000 ") & _
Format(0, "000")
ElseIf trennpunkte = 2 Then
Cells(zell.Row, 8) = Format(Left(zell.Value, erste - 1), "'000 ") & _
Format(Mid(zell.Value, erste + 1, zweite - erste), "000 ") & _
Format(Right(zell.Value, InStr(StrReverse(zell.Value), ".") - 1), "000 ") & _
Format(0, "000")
ElseIf trennpunkte = 3 Then
Cells(zell.Row, 8) = Format(Left(zell.Value, erste - 1), "'000 ") & _
Format(Mid(zell.Value, erste + 1, zweite - erste), "000 ") & _
Format(Mid(zell.Value, zweite + 1, dritte - zweite), "000 ") & _
Format(Right(zell.Value, InStr(StrReverse(zell.Value), ".") - 1), "000 ")
End If
Next
End Sub</pre>
Anzeige
AW: ... was lange währt:
18.03.2011 17:51:26
DirkR
Hallo Marc,
danke für deine Mühe!!!
Gruß Dirk

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige