Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Text suchen per Makro

Text suchen per Makro
09.11.2021 13:56:49
Sebastian
Hi zusammen,
ich versuche gerade ein Paar Formeln in meiner Tabelle durch Markos zu ersetzen. Bin da allerdings nicht so der Fachmann.
Ich versuche mal zu erklären was ich suche :)
Das Makro müsste ab Zeile 19-5000, Zeile für Zeile in Spalte B durchsuchen ob Text " XY " darin vorkommt und in der selben, also passenden Zeile in Spalte I mit einem "JA" oder "X" ausgeben.
Für jemandem mit Plan, bestimmt nicht so schwer wie für mich :D
Danke schon mal ;)
Anzeige

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Text suchen per Makro
09.11.2021 14:10:27
Pierre
Hallo Sebastian,

und in der selben, also passenden Zeile in Spalte I mit einem "JA" oder "X" ausgeben.
Meinst du, dass in Spalte I dann XYJA bzw. XYX stehen soll oder ausschließlich JA bzw. X?
Gruß Pierre
AW: Text suchen per Makro
09.11.2021 14:15:33
Sebastian
Hi Pierre, also er soll in der Zeile wo er Text " XY" gefunden hat JA in Spalte I Ausgeben. Also: Text in B 33 gefunden, dann in Zelle I 33 " JA " ausgeben. Wenn er nichts findet einfach nichts ausgeben :) Ich hoffe ich konnte es erklären.
Anzeige
AW: Text suchen per Makro
09.11.2021 14:29:29
Pierre
Hallo Sebastian,
irgendwie war mir das schleierhaft :-)
Aber du hast ja nun schon brauchbare Lösungen.
Gruß Pierre
AW: Text suchen per Makro
09.11.2021 14:12:36
ChrisL
Hi

Sub t()
With Range("I19:I" & Cells(Rows.Count, 2).End(xlUp).Row)
.Formula = "=IF(ISERROR(FIND(""XY"",B19)),""X"",""JA"")"
.Value = .Value
End With
End Sub
cu
Chris
Anzeige
AW: Text suchen per Makro
09.11.2021 14:21:29
Sebastian
Hi Chris, Mega das klappt. Allerdings soll er nur beim Gefundenen XY "Ja" anzeigen. den Rest leer lassen :) Und kann ich eigentlich mehrere Makros mit unterschiedlichen Suchen nacheinander laufen lassen und in I ausgeben lassen ? Es gibt nichts doppelt, also müsste es gehen :)
AW: Text suchen per Makro
09.11.2021 14:33:06
ChrisL
Hi
Das X kann man auch weglassen, so wie bei der Lösung von Daniel.
Mehrere Makros kannst du laufen lassen, aber die Lösungen werden jeweils überschrieben. Ansonsten müsste man die Formel anpassen z.B. basierend auf dem Ansatz von Daniel:
.FormulaR1C1 = "IF(CountIF(RC2,""*XY*"")+CountIF(RC2,""*ZZ*"")+CountIF(RC2,""*ABC*""),""JA"","""")
cu
Chris
Anzeige
AW: Text suchen per Makro
09.11.2021 16:43:48
Daniel
Hi
nee, mehrere Makros dieser Art nacheinander laufen zu lassen geht nicht!
Dei Formel wird ja in alle Zellen geschrieben, dh wenn du jetzt ein zweites mal so ein Makro mit anderen Werten in die gleichen Zellen schreiben lässt, werden die dort vorhandenen Werte überschrieben!
du müsstest also deine mehreren Abfragen in eine einzige Formel packen.
wenn das mit der einen großen Formel für alles schweriig wird und mehrere solcher Formeln nacheinander ausführen willst, könnte man das auch machen, wenn man ab der zweiten Ausführung angibt, dass die Formel nur in die noch leeren Zellen geschrieben werden soll und nicht in die bereits gefüllten:

With Range("I19:I" & Cells(Rows.Count, 2).End(xlUp).Row)
.SpecialCells(xlcelltypeblanks).Formula = "=IF(ISERROR(FIND(""XY"",B19)),""X"",""JA"")"
.Value = .Value
End With
dh mit diesem Zusatz ".SpecialCells(xlcelltypeblanks)" kannst du dann auch mehrere solcher Blöcke hintereinander ausführen lassen
wobei das .Value = .Value immer auf den ganzen Zellbereich gehen muss. Es muss auch immer ausgeführt werden, damit die Zellen mit dem Formelergebnis "" auch wieder zu Leerzellen werden.
Wenn das auch nicht sinnvoll ist, kannst du immer noch die Schleife über die Zellen laufen lassen.
Die bearbeitet nur die Zellen, die bearbeitet werden sollen und lässt die anderen in Ruhe.

Dim Zelle as Range
For Each Zelle in Range("B19:B5000")
if Zelle.Value like "*XY*" then Zelle.Offset(0, 7).Value = "ja"
Next
Davon kannst du mehrere hintereinander laufen lassen, oder auch gleich mehrere IF-Prüfungen einbauen.
Solange das für dich schnell genug ist, kann man das auch so machen.
Gruß Daniel
Anzeige
AW: Text suchen per Makro
09.11.2021 14:20:55
Daniel
Hi
das einfachste ist, per Makro diese Formeln in die Zellen einzutragen und dann die Formeln durch Werte zu ersetzen.

With Range("I19:I5000")
.FormulaR1C1 = "IF(CountIF(RC2,""*XY*""),""JA"","""")
.Formula = .Value
End With
Gruß Daniel
AW: Text suchen per Makro
10.11.2021 08:44:38
Sebastian
Guten Morgen zusammen, das hat erst mal alles sehr gut geklappt. Ich hab es jetzt mit der Variante gelöst:

Sub finde_plusy()
With Range("I19:I" & Cells(Rows.Count, 2).End(xlUp).Row)
.Formula = "=IF(ISERROR(FIND(""+Y"",B19)),"""",""JA"")"
.Value = .Value
End With
End Sub

Es wäre nur super wenn ich das Makro starte, das er einmal vorher alle Zellen leert, da die Anzahl der Zeilen ja Variiert. Das heißt wenn beim letzten mal in Zeile 200 ein "JA" stand, bei nächsten mal aber nur 50 Zeilen vorhanden sind, bleibt das JA auf 200 ja stehen. Ich hoffe ihr versteht mich :D
Anzeige
AW: Text suchen per Makro
10.11.2021 08:59:32
Sebastian
habe das Problem mit dem Inhalt löschen selbst gelöst bekommen :) Ich wüsste allerdings gerne wie
Formula = "=IF(ISERROR(FIND(""+Y"",B19)),"""",""JA"")"
Diese Zeile aussehen müsste wenn ich quasi der UND 2 Textstellen suche. Also er soll ja ausgeben wenn "X" und "Y" in der Zeile gefunden wurden :)
Danke schon mal
Anzeige
AW: Text suchen per Makro
10.11.2021 10:42:14
ChrisL
Hi

=WENN(ODER(ISTFEHLER(FINDEN("X";B19));ISTFEHLER(FINDEN("Y";B19)));"";"JA")

"=IF(OR(ISERROR(FIND(""X"",B19)),ISERROR(FIND(""Y"",B19))),"""",""JA"")"
cu
Chris
AW: Text suchen per Makro
10.11.2021 10:46:38
Sebastian
Hi Chris,
ich hab auch das mal hier in mein Makro gepackt, aber so findet er leider nichts :( Also beide Bedingungen müssen erfüllt sein für ein JA, das wäre wichtig

Sub finde_hütchenundy()
Range("J19:J" & Rows.Count).ClearContents
With Range("J19:J" & Cells(Rows.Count, 2).End(xlUp).Row)
Formula = "=IF(OR(ISERROR(FIND(""^"",B19)),ISERROR(FIND(""Y"",B19))),"""",""JA"")"
.Value = .Value
End With
End Sub

Anzeige
AW: Text suchen per Makro
10.11.2021 11:26:36
ChrisL
Hi
Bei mir funktioniert die Formel. Den fehlenden Punkt im Makro musst du natürlich ergänzen.
cu
Chris
AW: Text suchen per Makro
10.11.2021 12:14:38
Sebastian
Stimmt :) So klappts :) Dankeschön :)
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Text suchen per Makro in Excel


Schritt-für-Schritt-Anleitung

Um in Excel per Makro nach einem bestimmten Text zu suchen und das Ergebnis in einer anderen Zelle auszugeben, kannst du folgende Schritte befolgen:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Gehe zu Einfügen > Modul, um ein neues Modul zu erstellen.

  3. Kopiere den folgenden VBA-Code in das Modul:

    Sub TextSuchen()
       Dim Zelle As Range
       For Each Zelle In Range("B19:B5000")
           If InStr(1, Zelle.Value, "XY", vbTextCompare) > 0 Then
               Zelle.Offset(0, 7).Value = "JA"
           Else
               Zelle.Offset(0, 7).Value = ""
           End If
       Next Zelle
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Führe das Makro über Entwicklertools > Makros > TextSuchen aus.

Dieses Makro sucht in den Zellen von B19 bis B5000 nach dem Text "XY" und gibt in der entsprechenden Zelle in Spalte I "JA" aus, wenn der Text gefunden wird.


Häufige Fehler und Lösungen

  • Problem: Das Makro gibt "JA" in allen Zellen aus.

    • Lösung: Stelle sicher, dass die Bedingung im Code korrekt ist und nur ausgeführt wird, wenn der Text tatsächlich gefunden wird.
  • Problem: Das Makro funktioniert nicht.

    • Lösung: Überprüfe, ob die Makros in deinen Excel-Einstellungen aktiviert sind.
  • Problem: Leerzeichen oder zusätzliche Zeichen verhindern das Finden des Textes.

    • Lösung: Nutze Trim() oder Replace() in VBA, um unerwünschte Leerzeichen zu entfernen.

Alternative Methoden

Wenn du Excel nach Text suchen möchtest, gibt es mehrere Alternativen:

  1. Formelbasierte Methode: Du kannst eine Formel wie diese in Spalte I verwenden:

    =IF(ISNUMBER(SEARCH("XY", B19)), "JA", "")

    Diese Formel gibt "JA" zurück, wenn der Text "XY" in Zelle B19 gefunden wird.

  2. Bedingte Formatierung: Du kannst die bedingte Formatierung nutzen, um Zellen hervorzuheben, die den gesuchten Text enthalten.


Praktische Beispiele

Hier sind einige Beispiele, wie du das Makro anpassen kannst:

  • Nach mehreren Bedingungen suchen:

    Sub MehrereTextSuchen()
       Dim Zelle As Range
       For Each Zelle In Range("B19:B5000")
           If InStr(1, Zelle.Value, "X", vbTextCompare) > 0 And _
              InStr(1, Zelle.Value, "Y", vbTextCompare) > 0 Then
               Zelle.Offset(0, 7).Value = "JA"
           End If
       Next Zelle
    End Sub
  • Vorherige Werte löschen: Füge diese Zeile vor der Schleife hinzu, um die Zellen in Spalte I zu leeren:

    Range("I19:I5000").ClearContents

Tipps für Profis

  • Verwende Option Explicit am Anfang des Moduls, um sicherzustellen, dass alle Variablen deklariert werden.
  • Nutze Application.ScreenUpdating = False und Application.ScreenUpdating = True, um die Ausführungsgeschwindigkeit zu erhöhen, wenn du große Datenmengen bearbeitest.
  • Experimentiere mit SpecialCells(xlCellTypeBlanks), um nur leere Zellen zu bearbeiten.

FAQ: Häufige Fragen

1. Wie kann ich das Makro anpassen, um nach mehreren Texten zu suchen? Du kannst die Bedingungen in der If-Anweisung anpassen, um mehrere Texte zu suchen.

2. Funktioniert das auch in Excel 365? Ja, die vorgestellten Methoden und Makros funktionieren in Excel 365 sowie in vorherigen Versionen.

3. Was tun, wenn die Zellen nicht aktualisiert werden? Stelle sicher, dass das Makro korrekt ausgeführt wird und keine Fehler im Code vorhanden sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige