Alphabetische Zeichen loswerden (Microsoft Excel)
Bryan hat ein Arbeitsblatt mit vielen Zellen, die einige alphabetische Zeichen enthalten. Er sucht nach einer Möglichkeit, nur diese alphabetischen Zeichen zu entfernen, unabhängig davon, wo sie in der Zelle erscheinen. Wenn die Zelle beispielsweise „ABC123“ enthält, möchte Bryan „ABC“
entfernen und haben nur noch „123“ übrig. Ebenso sollte „A3B2C1“ zu „321“
werden und „# 45P%“ sollte zu „# 45%“ werden.
Die einzige Möglichkeit, dieses Problem anzugehen, besteht in der Verwendung von Makros. Wenn Sie die Zeichen einfach entfernen möchten, können Sie dies tun, indem Sie die Zellen auswählen, die Sie beeinflussen möchten, und dann ein Makro ausführen, das jede Zelle untersucht und die fehlerhaften Zeichen löscht. Es gibt viele Möglichkeiten, dies zu tun. Das folgende Makro ist ein einfacher Ansatz.
Sub CleanText1() Dim rngCell As Range Dim intChar As Integer Dim strCheckString As String Dim strCheckChar As String Dim intCheckChar As Integer Dim strClean As String For Each rngCell In Selection strCheckString = rngCell.Value strClean = "" For intChar = 1 To Len(strCheckString) strCheckChar = Mid(strCheckString, intChar, 1) intCheckChar = Asc(strCheckChar) Select Case intCheckChar Case 65 To 90 'upper case chars 'Do nothing Case 97 To 122 'lower case chars 'Do nothing Case 128 To 151 'special language chars 'Do nothing Case 153 To 154 'special language chars 'Do nothing Case 159 To 165 'special language chars 'Do nothing Case Else strClean = strClean & strCheckChar End Select Next intChar rngCell.Value = strClean Next rngCell End Sub
Das Schöne an diesem Ansatz zum Entfernen der Zeichen ist, dass Sie andere Zeichen leicht entfernen können, indem Sie einfach ändern, was in der Select Case-Struktur aktiviert ist (und welche Aktionen ausgeführt werden).
Wenn Sie die ursprünglichen Zellen nicht ändern möchten, sollten Sie eine benutzerdefinierte Funktion zusammenstellen, die eine „saubere“ Version einer Zeichenfolge zurückgibt. Dies kann erreicht werden, indem einige Änderungen am vorherigen Makro vorgenommen werden.
Function CleanText2(ByVal sRaw As String) As String Dim intChar As Integer Dim strCheckString As String Dim strCheckChar As String Dim intCheckChar As Integer Dim strClean As String Application.Volatile strClean = "" For intChar = 1 To Len(sRaw) strCheckChar = Mid(sRaw, intChar, 1) intCheckChar = Asc(strCheckChar) Select Case intCheckChar Case 65 To 90 'upper case chars 'Do nothing Case 97 To 122 'lower case chars 'Do nothing Case 128 To 151 'special language chars 'Do nothing Case 153 To 154 'special language chars 'Do nothing Case 159 To 165 'special language chars 'Do nothing Case Else strClean = strClean & strCheckChar End Select Next intChar CleanText2 = strClean End Function
Um die Funktion zu verwenden, können Sie eine Formel wie die folgende in eine Zelle einfügen:
=CleanText2(A1)
Das Ergebnis ist, dass die Formel eine „saubere“ Version von allem zurückgibt, was sich in Zelle A1 befindet, ohne den Inhalt von Zelle A1 zu stören.
_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 (9011) 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: