Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Bestimmter Buchstabe eines Strings

Bestimmter Buchstabe eines Strings
Pascal
Hallo,
zunächst muss ich sagen, dass ich in VBA egtl ein blutiger Anfänger bin. Seit 2 Wochen beschäftig ich mich damit und kann grade mal so ein paar Dinge...
Es geht um folgendes:
Aus Delphi kenne ich eine "Funktion" die mir einen Buchstaben eines Strings an einer bestimmten Stelle liefert.
String[1] liefert mir dabei den ersten Buchstaben des Strings. Analog dazu String[3] den dritten usw...
Gibt es sowas auch in VBA? Hab im Internet gesucht und nichts brauchbares gefunden. Vllt hab ich auch die falschen Scuhwörter benutzt.
Hintergrund ist folgender: In einem Tabellenblatt stehen Namen in der Form "M. Mustermann". In einem anderen Tabellenblatt stehen die gleichen Namen, nur Vorname und Nachname ausgeschrieben und beide in eigenen Spalten. Die Namen aus dem ersten Tabellenblatt sollen durch Zahlen ersetzt werden die im 2. Tabellenblatt neben den Namen stehen.
Das ist soweit kein Problem, aber es kommt auch vor, dass Nachnamen doppelt sind und dazu muss man die Vornamen vergleichen.
Dazu will ich das Zeoichen vor dem Punkt (im Beispiel "M") mit Hilfe der Split-Funktion isolieren. Und dann brauch ich noch den Anfangsbuchstaben des Vornamens aus dem 2. Tabellenblatt. Wenn ich den hab, kann ich sie vergleichen und dann könnt ich die Namen eindeutig zuordnen. Nur wie bekomme ich den ersten Buchstaben des Vornamens? Könnt ihr mir helfen?
LG Pascal

Anzeige
AW: Bestimmter Buchstabe eines Strings
05.09.2007 15:32:00
Jochen
Hi,
mit der Funktion Left:
Buchstabe = Left(TextinderZelle,1)
mfg Jochen

=LEFT(Variable,1) owT
05.09.2007 15:32:49
Renee

AW: =LEFT(Variable,1) owT
05.09.2007 15:54:55
ptonka
Hallo,
in VBA würde ich hier eher die Funktion MID nutzen.
Nehmen wir an, Du liest in einer Variable namens WERT den Namen "Mustermann" ein, dann kannst Du
mit MID(WERT,1,1) den ersten Buchstaben ermitteln.
Mit MID(WERT(1,2) den 2. Buchstaben.
WERT ist die Variable mit dem Text
die erste Zahl bezeichnet ab wann gezählt werden soll (1 = 1. Buchstabe des Textes, 2 = 2. Buchstabe des Textes)
die zweite Zahl bezeichnet die Stelle, die ausgegeben wird.
Beispiel:

Sub test()
Wert = "H. Mustermann"
Ausgabe = Mid(Wert, 1, 4)
End Sub


Ausgabe enthält den Buchstaben M (Blanks werden nämlich mitgezählt).
Gruß,
Ptonka

Anzeige
AW: Bestimmter Buchstabe eines Strings
05.09.2007 16:19:00
Reinhard
Hi Pascal,
Hinweise/lösungen wurden ja schon gegeben, nur, was soll denn Vba machen wenn in Tab1 "M.Mustermann" steht und in Tab2 gibt es
Maria Mustermann
Martin Mustermann
Michaela Mustermann
? *grübel*
Gruß
Reinhard

AW: Bestimmter Buchstabe eines Strings
06.09.2007 08:38:00
Pascal
Hallo
Also erstmal Danke für die raschen Antworten. Bis zum Ende hab ich jetzt noch nicht alles programmiert. Aber die Funktion die ihr mir genannt habt, macht das was ich gesucht habe.
@Reinhard
Dieser Fall kommt in meiner Tabelle nicht vor. Die Tabelle muss (in Software-Jahren) nur eine kurze Weile erweiterbar sein. Und in diesem Zeitraum wird sich diese Situation nicht ergeben. Natürlich ist das nicht die Denkweise mit der ein Programmierer an Projekte herantreten soll, aber für mich als VBA-Neuling ist das ein akzeptables Ergebnis.
Falls es den Fall geben würde, müsste man ja egtl nur die nächsten Stellen mitvergleichen...
Gruß Pascal

Anzeige
AW: Bestimmter Buchstabe eines Strings
06.09.2007 10:01:00
Pascal
Hallo nochmals
Im Zuge der Programmierung hat sich nun ein weiters Problem aufgetan.
Wieso ist es nicht möglich diese Zuordnung zu machen?
z = Split(x, ".", -1)
, wenn z als String definiert ist?

AW: Bestimmter Buchstabe eines Strings
06.09.2007 10:27:00
Renee
Hello Pascal,
Der Rückgabewert der Funktion Split ist ein Datenfeld und nicht ein String!
Deine Variable Z muss als Typ Variant definiert sein, da die Split-Funktion alle Einzelen (zerlegten) Teile in einem Array zurückgibt.
Greetz Renee

Anzeige
AW: Bestimmter Buchstabe eines Strings
06.09.2007 10:53:00
Pascal
Ah ok.
Ich dachte ich hätte irgendwo gelesen, dass Split einen String-Wert liefert.
Herzlichen Dank

AW: Bestimmter Buchstabe eines Strings
06.09.2007 16:57:22
Reinhard
Hi Pascal,
das stimmt ja auch gewissermaßen, nach
Z=Split(...)
gibt
msgbox NameType(z(2))
sicher String aus (kann auch TypeName heißen, das verwechsel ich immer*gg*)
Gruß
Reinhard
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Bestimmter Buchstabe eines Strings in Excel VBA


Schritt-für-Schritt-Anleitung

Um in Excel VBA einen bestimmten Buchstaben eines Strings zu isolieren, kannst du die Funktionen Left und Mid verwenden. Hier ist eine Schritt-für-Schritt-Anleitung, wie du das machst:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu, indem du mit der rechten Maustaste auf "VBAProject" klickst und "Einfügen" > "Modul" auswählst.
  3. Schreibe den folgenden Code, um den ersten Buchstaben eines Strings zu isolieren:
Sub Beispiel()
    Dim Wert As String
    Dim ErsterBuchstabe As String

    Wert = "M. Mustermann"
    ErsterBuchstabe = Left(Wert, 1) ' Gibt "M" zurück

    MsgBox "Der erste Buchstabe ist: " & ErsterBuchstabe
End Sub
  1. Um den zweiten Buchstaben zu erhalten, kannst du die Mid-Funktion verwenden. Hier ein Beispiel:
Sub Beispiel2()
    Dim Wert As String
    Dim ZweiterBuchstabe As String

    Wert = "Mustermann"
    ZweiterBuchstabe = Mid(Wert, 2, 1) ' Gibt "u" zurück

    MsgBox "Der zweite Buchstabe ist: " & ZweiterBuchstabe
End Sub

Häufige Fehler und Lösungen

Bei der Arbeit mit Strings in VBA können einige häufige Fehler auftreten:

  • Fehler: "Typ nicht definiert"
    Wenn du versuchst, die Split-Funktion zu verwenden, ohne die Variable als Variant zu definieren, erhältst du diesen Fehler. Stelle sicher, dass du die Variable richtig definierst:
Dim z As Variant
z = Split("M.Mustermann", ".")
  • Fehler: "Index außerhalb des Bereichs"
    Dieser Fehler tritt auf, wenn du versuchst, auf ein Element eines Arrays zuzugreifen, das nicht existiert. Überprüfe immer die Länge des Arrays, bevor du auf ein Element zugreifst.

Alternative Methoden

Neben Left und Mid gibt es auch andere Möglichkeiten, um Buchstaben aus einem String auszulesen:

  • Verwendung der InStr-Funktion:
    Mit InStr kannst du die Position eines bestimmten Zeichens im String finden und dann die Mid-Funktion verwenden, um den Buchstaben zu isolieren.
Dim Position As Integer
Position = InStr(Wert, ".")
If Position > 0 Then
    ErsterBuchstabe = Mid(Wert, 1, 1) ' Beispiel für den ersten Buchstaben
End If

Praktische Beispiele

Hier sind einige praktische Beispiele, die dir helfen, die Konzepte besser zu verstehen:

  1. Ersten Buchstaben eines Namens isolieren:
Sub ErsterBuchstabe()
    Dim Name As String
    Name = "M. Mustermann"
    MsgBox "Der erste Buchstabe ist: " & Left(Name, 1) ' Ausgabe: M
End Sub
  1. Buchstaben vor dem Punkt isolieren:
Sub BuchstabeVorPunkt()
    Dim Name As String
    Dim Teile As Variant

    Name = "M. Mustermann"
    Teile = Split(Name, ".")
    MsgBox "Der Buchstabe vor dem Punkt ist: " & Trim(Teile(0)) ' Ausgabe: M
End Sub

Tipps für Profis

  • Verwende Trim: Um sicherzustellen, dass du keine unnötigen Leerzeichen hast, kannst du die Trim-Funktion verwenden, bevor du Buchstaben isolierst.
  • Verstehe die Indizes: In VBA beginnen Indizes bei 1, nicht bei 0. Dies ist wichtig, wenn du Buchstaben aus einem String extrahierst.
  • Kombiniere Funktionen: Du kannst Left, Mid, und InStr kombinieren, um komplexere String-Operationen durchzuführen.

FAQ: Häufige Fragen

1. Wie kann ich den letzten Buchstaben eines Strings erhalten?
Du kannst die Len-Funktion verwenden, um die Länge des Strings zu ermitteln und dann den letzten Buchstaben mit Mid zu isolieren:

Dim LetzterBuchstabe As String
LetzterBuchstabe = Mid(Wert, Len(Wert), 1)

2. Was ist die Split-Funktion und wie funktioniert sie?
Die Split-Funktion zerlegt einen String in Teile, basierend auf einem bestimmten Trennzeichen, und gibt ein Array zurück. Du musst sicherstellen, dass die Variable, die das Ergebnis speichert, als Variant definiert ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige