PDA

Vollständige Version anzeigen : Trenne Text von Zahlen


Zuri
05.12.2006, 15:04
Hallo zusammen,

ist ja auch schön öfters mal gefragt worden:

Function TrenneTextZahl(InText As String, inModus As String) As String

'Modus 'Z' liefert die Zahl
' 'T' liefert den Text

Dim I, n As Integer
Dim OutStr As String
Dim c As String


n = Len(InText)
OutStr = ""

For I = 1 To n
c = Mid(InText, I, 1)
If IsNumeric(c) Then
If inModus = "Z" Then
OutStr = OutStr & Mid(InText, I, 1)
End If
Else
If inModus = "T" Then
OutStr = OutStr & Mid(InText, I, 1)
End If
End If
Next

TrenneTextZahl = OutStr

End Function

Viele Grüße

Zuri

:boah:

Anne Berg
05.12.2006, 16:48
Huch, seit wann kann denn hier jeder Benutzer seinen Code einfach so einstellen? :eek:
War das nicht mal anders oder verwechsle ich das mit dem Testzentrum? :confused:

Ich meine, solche Code-Beispiele sollten schon Muster-Character haben und die Grundvoraussetzungen erfüllen, wie z.B. schön formatiert, gut kommentiert und eine Kurzbeschreibung zu Sinn und Zweck und Handhabung enthalten - oder sehe ich das falsch? (nichts für ungut, Zuri ;))

Im übrigen würde ich erwarten, dass eine solche Funktion den Rückgabewert im passenden Format liefert, also nicht nur String.

... und Integer ist vielleicht auch nicht das optimale Zahlenformat.

Zuri
05.12.2006, 22:14
Hallo zusammen,

Anne hat Recht. Ich sollte erklären, wozu das Ganze überhaupt gut ist. Es geht darum, aus einer Zeichenkette Zahlen und Buchstaben heraustrennen zu können. In der Praxis kann man dieses z. B. sehr gut anweden, wenn man aus Artikelnummern bestimmte Werte rausfiltern will. Es gibt sehr viele Artikelnummern die nicht auschließlich nummerisch oder nur alphabetisch sind. Viele Artikelnummern sind z. B. alphanummerisch wobei hier z. B. die Buchstaben an vollkommen unterschiedlichen Stellen vorkommen können.

Ein Beispiel aus der Praxis:

Ihr habt unterschiedlich lange alphanummerische Artikelnummern für PKW Lenkungsteile. Die Buchstaben die an einer beliebigen Stelle in der Zeichenkette stehen identifizieren das Fahrzeug. Ihr wollt nun die Buchstaben heraus trennen, weil Ihr in der Artikelbezeichnung gerne noch hinter dem Wort Querlenker das Fahrzeug schreiben wollt. Dafür braucht Ihr aber als Grundlage nur die Buchstaben in einer extra Spalte.

Das Ganze funktioniert dann über eine Aktualisierungsbfrage in einer neuen leeren Spalte:

TrenneTextZahl([Spaltenname];"T")

Das geht dann natürlich genauso mit den Zahlen, wenn man diese haben will:

TrenneTextZahl([Spaltenname];"Z")

@Anne,

das ist ein Beispiel aus meiner Berufspraxis. Wenn Du die Zahlen als Double haben willst, gehen Dir die Nullen verloren, die eventuell durch das Trennen in die erste Position rutschen. Außerdem hast Du in den Artikelnummern keine Nachkommastellen. Deshalb werden die Werte als Integer angegeben.

Ansonsten hat Anne natürlich Recht, wenn Sie sagt, dass man generell alles schön als Double formatieren sollte, weil sonst die Nachkommastellen verloren gehen.

Aber in diesem Beispiel ist das nicht der Fall, weil es um Artikelnummern (Zeichenkette) geht.

@MOF-Team,

ich würde ja Anne gerne den Gefallen tun und das Ganze noch schön formatieren. Aber ich komme ja im Nachhinein jetzt nicht mehr an das Codebeispiel heran? Aber das ist glaube ich auch nicht ganz so wichtig. Nach dem Kompilieren funktioniert die Funktion einwandfrei.

Ich wünsche allen viel Spaß beim Ausprobieren.

Viele liebe Grüße aus Berlin

Zuri

:yelrotfl:

Anne Berg
05.12.2006, 22:29
Nur mal so und ganz spontan reagiert:

ich meinte nicht Double sondern Long als empfehlenswerte Integer-Alternative.

Ansonsten ist natürlich klar, dass die Funktion "TrenneTextZahl" Zeichenketten oder Zahlen aus Textstrings extrahieren soll - fragt sich nur, ob "vorne-mitte-hinten" - bzw. wo die gesuchten Daten sich zu befinden haben bzw. wo sie gesucht und gefunden werden. :confused:

... das ist mir nicht klar bzw. das wurde nicht deutlich genug hervorgehoben.

Zuri
05.12.2006, 22:36
Hallo Anne,

das ist ja gerade das Problem. Man kann doch z. B. auch Artikelnummern verschiedener Hersteller haben. Diese sind dann nicht alle gleich nach einem logischen Prinzip aufgebaut.

Die Daten können in der Zeichenkette überall stehen. Es ist vollkommen egal ob z. B. die Zahlen oder Buchstaben vorne, hinten oder in der Mitte stehen. Die Funktion trennt diese in eine extra Spalte.

Viele liebe Grüße

von

Zuri

:rolleyes:

Zuri
05.12.2006, 23:15
Hallo Anne,

ich sehe gerade das wir hier ja schon eine Richtlinie zum Thema Code-Archiv haben.

Hier der Link dazu:

http://ms-office-forum.net/forum/showthread.php?t=114449

Viele liebe Grüße

Zuri

:rolleyes:

TommyK
06.12.2006, 11:21
Hallo,

hab mal ein paar Codes zum Manipulieren von Strings in einer kleinen
Bsp-DB zusammengefasst.
Ich hoffe das ist dann etwas leicht verständlicher als nur der reine Code.
Enthalten ist:
1. zuri's Code zum Trennen von Text und Zahlen
2. Zählen von Wörtern
3. andere Lösung zum extrahieren von Text und Zahlen
4. Löschen von beliebigen Zeichen aus einem String

Viel Spass

tornado
06.12.2006, 13:20
uups, da habe ich wohl mit meiner Fragerei was angerichtet... :entsetzt: :entsetzt: :entsetzt:

tornado :mrcool: