Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1420to1424
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

Alphanumerischen String zerlegen und übertragen

Alphanumerischen String zerlegen und übertragen
17.04.2015 20:58:59
Constantin
Hallo,
in einer Mappe1, Tabelle1, habe ich in Spalte A alphanumerische Bezeichnungen, z.B. S911B, ABC, S230TD12X usw.. Jeder Buchstabe und jede Ziffer stellt eine Ebene dar.
Im ersten Schritt möchte ich feststellen, wie viele Ebenen der jeweilige String hat. Eine Besonderheit gibt es: Folgen drei Ziffern aufeinander, zählen diese als eine Ebene". ABC hat somit 3 Ebenen, S911B ebenso, weil drei Ziffern als eine Ebene zählen. Mehr als drei Ziffern in Folge gibt es nicht.
Diese Anzahl wird als Zahl in Spalte B übertragen.
Im zweiten Schritt soll der String bis zur jeweiligen Ebene "zerlegt" und in die Folgespalten übertragen werden. Einträge erfolgen nur bis zur sechsten Stufe bzw. Ebene.
Das Ergebnis für den String S911B sieht so aus:
Spalte B: 3 (Anzahl Ebenen)
Spalte C: S (Ebene 1)
Spalte D: S911 (Ebene 2)
Spalte E: S911B (Ebene 3)
(mehr Ebenen hat dieser String nicht).
Vielleicht wird es verständlicher mit der beigefügten Datei. Für eine Idee, wie ich diese Ebenen per VBA ermitteln kann, wäre ich sehr dankbar.
Grüße, Constantin
https://www.herber.de/bbs/user/97143.xlsx

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Wozu brauch man so was?
17.04.2015 22:53:08
Michael
Hallo Constantin,
mit folgendem Makro in Tabelle1 läuft's:

Option Explicit
Sub ebenen()
Dim wert, pattern As String
Dim i, j, zeile, spalte, laenge, ebenen As Long
Dim zeichen As Byte
For zeile = 12 To 28
wert = Range("A" & zeile).Value
laenge = Len(wert)
pattern = ""
For i = 1 To laenge
zeichen = Asc(Mid(wert, i, 1))
If zeichen > 64 And zeichen  47 And zeichen 
Ich hatte dauernd das Gefühl, an einer echt eleganten Lösung vorbeizuschrammen, aber ich kam nicht drauf... Dann halt so.
Ach so: das erste Zeichen muß ein Buchstabe sein, sonst mußt Du es halt ändern in:

If zeichen > 47 And zeichen 
Profis aus Programmiersprachen wie Perl kennen eine Funktion, die sich regex ("regular expressions") nennt, wer sich damit auskennt, tut sich leichter.
Einige IFs hätte man als Select/Case gestalten könnnen, das zweite Case als IF (ich hatte tatsächlich die Aufgabenstellung schon wieder vergessen und zweistellige Zahlen als Ebenen ausgegeben).
Na dann, viel Spaß und happy exceling,
Michael

Anzeige
AW: Super gelöst!
18.04.2015 08:12:11
Constantin
Hallo Michael,
vielen Dank für diese Lösung! Funktioniert bestens. Jetzt lassen sich Werte, die hinter diesen Bezeichnungen stehen, leichter ebenen-bezogen auswerten und Zusammenhänge innerhalb der Ebenen abbilden.
Ich werde noch ein bisschen Zeit brauchen - und Freude daran haben(!) - die einzelnen Programmschritte genau nachzuvollziehen.
Also, vielen Dank nochmal.
Grüße, Constantin

Freut mich, wenn Du Dich freust
18.04.2015 17:15:41
Michael
Hallo Constantin,
vielen Dank für die Rückmeldung!
Schöne Grüße,
Michael

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige