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 (3219) 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: