Scott fragt sich, wie er Excel dazu bringen kann, automatisch einen Bindestrich zwischen jedem Buchstaben in einer bestimmten Zelle einzufügen. Wenn die Zelle A1 beispielsweise „Haus“ enthält, möchte Scott sie in „h-o-u-s-e“ konvertieren.

Dies kann mit einer Formel erfolgen, wird jedoch schnell unhandlich. Zum Beispiel kann die folgende Formel verwendet werden, um Bindestriche zwischen die Buchstaben Ihrer Eingabe in Zelle A1 zu setzen:

=CHOOSE(LEN(A1),A1,LEFT(A1,1) & "-" & RIGHT(A1,1), LEFT(A1,1) & "-" & MID(A1,2,1) & "-" & RIGHT(A1,1), LEFT(A1,1) & "-" & MID(A1,2,1) & "-" & MID(A1,3,1) & "-"

& RIGHT(A1,1),LEFT(A1,1) & "-" & MID(A1,2,1) & "-"

& MID(A1,3,1) & "-" & MID(A1,4,1) & "-" & RIGHT(A1,1), LEFT(A1,1) & "-" & MID(A1,2,1) & "-" & MID(A1,3,1)

& "-" & MID(A1,4,1) & "-" & MID(A1,5,1) & "-" & RIGHT(A1,1))

Dieses spezielle Beispiel einer Formel funktioniert nur mit Text mit einer Länge von bis zu sechs Zeichen. Somit würde es für „Haus“ richtig funktionieren, aber nicht für „Haushalt“. Die Formel könnte verlängert werden, würde aber wiederum schnell sehr lang werden.

Ein besserer Ansatz ist die Verwendung eines Makros für die Konvertierung. Wenn Sie die Bindestriche direkt in die Zelle einfügen möchten, können Sie ein Makro wie das folgende verwenden:

Sub AddDashes1()

Dim Cell As Range     Dim sTemp As String     Dim C As Integer

For Each Cell In Selection         sTemp = ""

For C = 1 To Len(Cell)

sTemp = sTemp + Mid(Cell, C, 1) + "-"

Next         Cell.Value = Left(sTemp, Len(sTemp) - 1)

Next End Sub

Dieses Makro kann für einen ausgewählten Zellbereich verwendet werden. Wählen Sie einfach die Zellen aus, die Sie konvertieren möchten, und führen Sie dann das Makro aus. Die Bindestriche werden zwischen jedem Buchstaben in den Zellen eingefügt.

Wenn Sie die ursprünglichen Zellenwerte nicht ändern möchten, können Sie eine benutzerdefinierte Funktion erstellen, die die Aufgabe übernimmt:

Function AddDashes2(Src As String) As String     Dim sTemp As String     Dim C As Integer

Application.Volatile     sTemp = ""

For C = 1 To Len(Src)

sTemp = sTemp + Mid(Src, C, 1) + "-"

Next     AddDashes2 = Left(sTemp, Len(sTemp) - 1)

End Function

Um diese Funktion zu verwenden, würden Sie Folgendes in Ihrem Arbeitsblatt verwenden:

=AddDashes2(A1)

Wenn Sie sicherstellen möchten, dass die Funktion etwas robuster ist, können Sie sie so ändern, dass sie mehrere Wörter verarbeitet. In einem solchen Fall möchten Sie nicht, dass ein Leerzeichen als „strichbarer Buchstabe“ behandelt wird. Zum Beispiel möchten Sie, dass die Routine „eins zwei“ Bindestriche hinzufügt, sodass sie als „o-n-e t-w-o“ anstelle von „o-n-e-t-w-o“ ausgegeben wird. Die folgende Variation der Funktion reicht aus:

Function AddDashes3(Src As String) As String     Dim sTemp As String     Dim C As Integer

Application.Volatile     sTemp = ""

For C = 1 To Len(Src)

sTemp = sTemp + Mid(Src, C, 1)

If Mid(Src, C, 1) <> " " And           Mid(Src, C + 1, 1) <> " " And           C < Len(Src) Then             sTemp = sTemp + "-"

End If     Next     AddDashes3 = sTemp End Function

_Hinweis: _

Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.

ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.

Dieser Tipp (9633) gilt für Microsoft Excel 97, 2000, 2002 und 2003. Eine Version dieses Tipps für die Multifunktionsleistenschnittstelle von Excel (Excel 2007 und höher) finden Sie hier: