Hinzufügen von Bindestrichen zwischen Buchstaben (Microsoft Excel)
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 in Ihrem Arbeitsblatt Folgendes 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 (9634) gilt für Microsoft Excel 2007, 2010, 2013, 2016, 2019 und Excel in Office 365. Eine Version dieses Tipps für die ältere Menüoberfläche von Excel finden Sie hier: