Zähler auf einen Teil eines Strings legen

Hallo zusammen,

ich habe eine Frage.
Ich habe in Spalte A alle 86 Zeilen eine Zelle in der steht:
„kdnr“:„90010159“, nächste Zelle:„kdnr“:„90010159“,
„kdnr“:„90010160“, nächste Zelle:„kdnr“:„90010157“, ect.
die Werte, also die Zahlen, in den Zellen, möchte ich nun fortlaufend aufzählen:
„kdnr“:„90010159“, nächste Zelle: „kdnr“:„90010160“,
„kdnr“:„90010161“,nächste Zelle: „kdnr“:„90010162“,

ich habe auch schon ein Makro, dass die Zellen durchsucht und wenn der Wert der Zelle „kdnr“ ist, den Inhalt in kdnr und die Zahl aufteilt. Am Ende werden diese beiden Werte auch wieder richtig zusammen fügt. Ich habe nur noch keine Lösung für das fortlaufende aufzählen der Nummern gefunden. Hier das Makro, das bis auf das Aufzählen, alles macht, was es soll.

Sub aufzaehlen()
Dim zaehler as Integer
Dim nummer, w, z As Variant
Dim Loletzte As Long
LoLetzte = Iff(IsEmpty(Range(„A65536“)),Range(„A65536“).End(xl(UP).Row, 65536)
For zaehler = 1 To LoLetzte
w = Mid (Cells(zaehler,1), 2, 4)
nummer = Mid(Cells(zaehler,1), 9, 8)
If w = „kdnr“ then
Jetzt müsste das Aufzählen der Nummer kommen
z = Chr(34) & w & Chr(34) & „:“ & Chr(34) & nummer & Chr(34) & „,“
Cells(zaehler,1) = z
End if
Next
End Sub

Ich hoffe, ich habe mich verständlich ausgedrückt und einer kann mir helfen.

LG Martina

Eine Zeichenfolge wird mit val(Zeichenfolge) in eine Zahl umgewandelt.
Die erste Nummer wandelst du so um und speicherst den Wert in einer Variablen, die du mit jedem weiteren Treffer hochzählst.

Gruß,

Kannitverstan

Hallo,

verstehe ich das richtig, du möchtest das Auftauchen der einzelnen Kundennummern mitzählen? Also z.B. 90010159 3 mal, 90010159 5 mal etc?

Das kann man recht einfach mittels einem Array erledigen, Ist zwar nicht sehr elegant, und auch nicht Speicher schonend, aber sehr schnell.

Dann nimmt man die Kundennummer als Index für den Array und zählt jeweils den Wert eins hoch. In deinem Fall falls alle Kundennummern mit mit 9001 beginnen könnte man das etwa so machen:

Dim iArrCount (10000) As Integer
Dim iIndex As long
’ in der Schleife dann
iIndex = nummer - 90010000
iArrCount(iIndex) = iArrCount(iIndex) +1

Am Ende hast du im Array die Anzahl der entsprechenden Kundennummern.

btw. das Zerlegen des Zellinhaltes in „kdnr“ und die Nummer lässt sich viel einfacher mittels Split(zeichenkette, Trennzeichen) erledigen.

Tschau
Peter