Microsoft Excel

Das Portal zum Thema Excel-Formeln

Gruppe: Sonstige

Beitrag: Strings bzw. Texte korrekt verketten

Aufgabe
Wir erleben sehr oft, dass Anwender – auch mit „guten“ Excelkenntnissen - Probleme bei der Verkettung von Strings / Texten haben. Daher wollen wir mit diesem Beitrag ein wenig für Klarheit sorgen.
Lösung
Es spielt keine Rolle, ob die Strings/Texte in VBA oder im Excelblatt selbst verkettet werden – das Prinzip ist immer das Selbe. Folgendes Beispiel zeigt die Erzeugung einer Anrede aus Name und Vorname:

Text wird dabei in Anführungszeichen geschrieben. In dem Moment, wo der Inhalt einer Zelle mit verkettet werden soll, wird dieser mit & verkettet. Die Anzahl der Anführungszeichen muss immer gerade sein! Bei Frau Huber sind es 4, bei Herrn Fischer 6 Anführungszeichen. Eine ungerade Anzahl ist niemals möglich!
In VBA ist das Prinzip identisch:
Sub korrekte_Stringverkettung()
Const Vorname As String = "Peter"
Const Nachname As String = "Fischer"
Dim Anrede As String
Anrede = "Lieber " & Vorname & " " & Nachname & ","
MsgBox Anrede
End Sub

Es gilt zu beachten, dass Anführungszeichen, die Bestandteil des finalen Strings sind, doppelt gesetzt werden müssen. Im Beispiel soll der Text "Hallo" Welt erzeugt werden, wobei das Wort Welt in A1 steht.

Die Anzahl der " beträgt hier 6 und ist somit – natürlich – gerade.
Klassischer Anwendungsfall in VBA für das Doppeln der Anführungszeichen ist die Erzeugung einer WENN-Formel, die "" als Wert zurückgeben kann:
=WENN(A1="";"";A1)
Die korrekte VBA-Schreibweise dafür lautet:
Sub Anführungszeichen_doppelt()
Range("B1").FormulaLocal = "=WENN(A1="""";"""";A1)"
End Sub

Da die Formula(Local)-Eigenschaft von Haus aus einen String benötigt, wird der gesamte Formel-Ausdruck außenherum in Anführungszeichen gefasst. Jedes ", das explizit Bestandteil der Formel ist, wird doppelt geschrieben: ""
Aber auch hier gilt: Die Anzahl der Anführungszeichen muss immer gerade sein – hier sind es 10!
Ein letzter Anwendungsfall, der häufig vorkommt, ist die indirekte Referenzierung mit der gleichnamigen Funktion INDIREKT.
Im Beispiel soll auf Tabelle 3, Zelle A4 referenziert werden (in dieser Zelle steht testweise das Wort Excel). Der Blattname (Tabelle 3) steht in B1, die gewünschte Zelle (A4) in B2. In Zelle B3 steht – quasi als Referenz dafür, wie der Bezug aussehen muss - der direkte Bezug ='Tabelle 3'!A4. Mit INDIREKT muss dieser Bezug in B4 nun absolut identisch „zusammengebaut“ werden.

Es beginnt mit dem Hochkomma, das in Anführungszeichen gefasst wird (ist etwas kniffelig zu erkennen) – gefolgt von der &-Verkettung des Blattnamens, der in B1 steht – gefolgt von Hochkomma und Ausrufezeichen (wieder als &-Verkettung und zudem in Anführungszeichen) – gefolgt von der mit & verketteten Zelladresse aus B2, so dass INDIREKT am Ende den korrekten Bezug als String/Text erhält: =INDIREKT("'Tabelle 3'!A4").
Ist mehr eine Konzentrationsübung als eine wirkliche Herausforderung.
Die Anzahl der " beträgt in diesem Fall 4 – und ist – wenig überraschend – wiederum gerade!
Erläuterung
Ergänzend / unterstützend bietet Excel aktuell auch 3 Funktionen zum Verketten an: VERKETTEN – und seit xl-Version 2019: TEXTKETTE und TEXTVERKETTEN
Beispiel