Ankur hat ein Arbeitsblatt mit Tausenden von Zellen, die verschiedene Begriffe enthalten. Er muss eine große Anzahl dieser Begriffe und die Zellen, in denen sie vorkommen, löschen. Beispielsweise muss er möglicherweise alle Zellen löschen, die Begriffe wie „google“, „youtube“, „linkedin“ und zahlreiche andere Begriffe enthalten. Ankur weiß, dass er jeden dieser Begriffe suchen und ersetzen kann, aber das ist ziemlich langweilig. Er fragt sich, ob es eine Möglichkeit gibt, alle zu entfernenden Begriffe zu identifizieren und sie dann von Excel aus diesen Tausenden von Zellen entfernen zu lassen.

Wenn Sie diese Art von Dingen regelmäßig ausführen müssen, ist die beste Lösung die Verwendung eines Makros. Der Trick besteht darin, wie Sie im Makro genau angeben, was Sie ersetzen möchten. Eine Möglichkeit besteht darin, die Informationen wie im folgenden Beispiel in ein Array zu packen:

Sub RemoveTerms1()

Dim vTerm As Variant     Dim vArray As Variant

vArray = Array("google", "youtube", "linkedin")

For Each vTerm in vArray         Selection.Replace What:=vTerm, _           Replacement:="", LookAt:=xlPart     Next vTerm End Sub

Die gesuchten Begriffe werden in das vArray-Array eingefügt, und dann wird jedes Mitglied des Arrays (jeder Begriff) durchlaufen. Die Replace-Methode wird mit dem Selection-Objekt verwendet, um die eigentlichen Ersetzungen durchzuführen. Das Makro entfernt keine Zellen. Es wird einfach jeder Text entfernt, der dem Begriff entspricht. Beim Ersetzen wird bei der Suche die Groß- und Kleinschreibung nicht berücksichtigt, sodass „google“ mit „Google“ übereinstimmt.

Da das Auswahlobjekt verwendet wird, müssen Sie sicherstellen, dass Sie die Liste auswählen, die Sie verarbeiten möchten, bevor Sie das Makro tatsächlich ausführen.

Wenn Sie dies nicht tun, wird nichts ersetzt.

Wenn Sie möchten, können Sie ein Makro erstellen, das die Begriffe aus einer Reihe von Zellen in der Arbeitsmappe abruft.

Sub RemoveTerms2()

Dim c As Range     Dim rngSource As Range     Dim vTerm As Variant     Dim arrTerms As Variant     Dim i As Integer

i = -1     arrTerms = Array()

For Each c In Range("D1:D9").Cells         If Trim(c.Value) > "" Then             i = i + 1             ReDim Preserve arrTerms(i)

arrTerms(i) = Trim(c.Value)

End If     Next c

On Error Resume Next     Set rngSource = Application.InputBox( _                     Prompt:="Please select Range", _                     Title:="Removing Cells Containing Terms", _                     Default:=ActiveSheet.UsedRange.Address, Type:=8)

On Error GoTo 0     If rngSource Is Nothing Then         MsgBox ("You didn't specify a range to process")

Else         For Each vTerm in arrTerms             rngSource.Replace What:=vTerm, _               Replacement:="", LookAt:=xlWhole         Next vTerm     End If End Sub

Dieses Makro ruft die Suchbegriffe aus dem Bereich D1: D9 ab und fordert Sie dann auf, den Bereich der Zellen auszuwählen, die Sie verarbeiten möchten. Es wird dieselbe Ersetzungsmethode verwendet, die im vorherigen Makro verwendet wurde, außer dass der LookAt-Parameter xlWhole ist. Dies bedeutet, dass der Suchbegriff mit der gesamten Zelle übereinstimmen muss, um entfernt zu werden. Die Begriffe werden jedoch weiterhin als unabhängig von Groß- und Kleinschreibung betrachtet.

Beachten Sie, dass die bisherigen Beispiele keine Zellen löschen. Sie löschen einfach den Inhalt von Zellen. In vielen Fällen ist dies genau das, was Sie möchten, da Sie das Layout des eigentlichen Arbeitsblatts nicht stören möchten. Wenn Sie wirklich Zellen löschen möchten, würden Sie die Replace-Methode nicht verwenden. Stattdessen können Sie den erweiterten Textvergleich aktivieren und den Operator „Gefällt mir“ verwenden, um festzustellen, ob eine Übereinstimmung vorliegt.

Option Compare Text

Sub RemoveTerms3()

Dim c As Range     Dim rngSource As Range     Dim vTerm As Variant     Dim arrTerms As Variant     Dim i As Integer     Dim sLook As String

i = -1     arrTerms = Array()

For Each c In Range("D1:D9").Cells         If Trim(c.Value) > "" Then             i = i + 1             ReDim Preserve arrTerms(i)

arrTerms(i) = Trim(c.Value)

End If     Next c

On Error Resume Next     Set rngSource = Application.InputBox( _                     Prompt:="Please select Range", _                     Title:="Removing Cells Containing Terms", _                     Default:=ActiveSheet.UsedRange.Address, Type:=8)

On Error GoTo 0     If rngSource Is Nothing Then         MsgBox ("You didn't specify a range to process")

Else         For Each vTerm in arrTerms             sLook = "" & vTerm & ""

For Each c In rngSource                 If c.Value Like sLook Then c.Delete             Next         Next vTerm     End If End Sub

Beachten Sie, dass die Suchbegriffe weiterhin aus dem Bereich D1: D9 stammen und Sie weiterhin nach dem Bereich gefragt werden, den Sie verarbeiten möchten. Von dort aus ist der Prozess jedoch anders: Das Makro untersucht jede Zelle, und wenn eine teilweise Übereinstimmung vorliegt, wird die Zelle gelöscht.

Damit diese Variation des Makros ordnungsgemäß funktioniert, müssen Sie die Zeile Option Compare Text außerhalb der Prozedur selbst einfügen.

Dadurch wird VBA angewiesen, die Schlüsselwörter (z. B. „Gefällt mir“) zu aktivieren, mit denen Text verglichen werden kann.

_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 (13373) gilt für Microsoft Excel 2007, 2010, 2013, 2016, 2019 und Excel in Office 365.