Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Ganzes Tabellenblatt durchsuchen

Forumthread: Ganzes Tabellenblatt durchsuchen

Ganzes Tabellenblatt durchsuchen
24.11.2005 13:25:59
Michael
Ich drehe noch durch
Dank eurer Hilfe habe ich das ganze so hinbekommen, daß die Spalten B und C durchsucht und Wenn in Spalte B "Montag" und daneben (Spalte C) "4" steht dann wird in in Spalte A "1" hingeschrieben. Im ganzen Tabellenblatt taucht immer wieder Montag und daneben 4 auf. Kann man das auch so umbauen, daß das ganze Tabellenblatt durchsucht wird?

Sub test2()
For n = 1 To Range("C65536").End(xlUp).Row
If Weekday(Cells(n, 3)) = 2 And Cells(n, 2) = "4" Then
Cells(n + 1, 2) = 1
End If
Next
End Sub

Danke für eure Hilfe
Michael
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ganzes Tabellenblatt durchsuchen
24.11.2005 14:03:25
Luschi
Hallo Michael,
sowas macht man mit dem Find-Befehl:
Sub test2()
Dim ws As Worksheet, rg1 As Range, rg2 As Range, firstAdr As String, _
xRow As Long
Set ws = ActiveSheet
Set rg1 = ws.Cells
ActiveSheet.Range("A1").Activate
Set rg2 = rg1.Find("Montag", , xlValues, xlPart, xlByRows, xlNext, False)
If Not (rg2 Is Nothing) Then
firstAdr = rg2.Address
Do
If rg2.Offset(0, -1).Value = 4 Then
xRow = rg2.Row
ws.Range("A" & xRow).Value = 1
End If
Set rg2 = rg1.FindNext(rg2)
Loop While (Not (rg2 Is Nothing)) And rg2.Address <> firstAdr
End If
Set rg1 = Nothing
Set rg2 = Nothing
Set ws = Nothing
End Sub
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Ganzes Tabellenblatt durchsuchen
24.11.2005 14:17:00
Michael
Hallo und danke
ich habe den Code soeben hinneinkopiert, nur irgendwas funktioniert nicht so wie es sein soll. Fundstellen Montag (4) 14.11.2005 das ist ok Donnerstag 17.11.2005 nicht ok
Ich werde mich noch etwas damit spielen.
Danke für den Lösungsansatz
Michael
AW: Ganzes Tabellenblatt durchsuchen
24.11.2005 14:21:14
Michael
Hallo und danke
ich habe den Code soeben hinneinkopiert, nur irgendwas funktioniert nicht so wie es sein soll. Fundstellen Montag (4) 14.11.2005 das ist ok Donnerstag 17.11.2005 nicht ok
Ich werde mich noch etwas damit spielen. Ich habe die Tage als Datum im Tabellenblatt, vielleicht ist das der Fehler Weekday(Cells(n, 3))
Danke für den Lösungsansatz
Michael
Anzeige
Es funktioniert : Ganzes Tabellenblatt durchsuchen
24.11.2005 14:29:56
Michael
Hallo nocheinmal
Dein Code funktioniert SUUUUPPPER. Er findet alle gesuchten werte (die was richtig sind) und schreibt sie halt in TabelleA hinein. Darum bin ich drübergestolpert, da ich die werte rechts vom Datum haben will
;
Anzeige

Infobox / Tutorial

Ganzes Tabellenblatt durchsuchen


Schritt-für-Schritt-Anleitung

Um ein ganzes Tabellenblatt in Excel nach bestimmten Werten zu durchsuchen, kannst Du den folgenden VBA-Code verwenden. Dieser Code durchsucht die Spalten B und C und schreibt in Spalte A eine "1", wenn in Spalte B "Montag" und in Spalte C "4" steht.

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

  2. Klicke auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.

  3. Füge den folgenden Code ein:

    Sub test2()
       Dim ws As Worksheet, rg1 As Range, rg2 As Range, firstAdr As String, xRow As Long
       Set ws = ActiveSheet
       Set rg1 = ws.Cells
       ActiveSheet.Range("A1").Activate
       Set rg2 = rg1.Find("Montag", , xlValues, xlPart, xlByRows, xlNext, False)
       If Not (rg2 Is Nothing) Then
           firstAdr = rg2.Address
           Do
               If rg2.Offset(0, -1).Value = 4 Then
                   xRow = rg2.Row
                   ws.Range("A" & xRow).Value = 1
               End If
               Set rg2 = rg1.FindNext(rg2)
           Loop While (Not (rg2 Is Nothing)) And rg2.Address <> firstAdr
       End If
       Set rg1 = Nothing
       Set rg2 = Nothing
       Set ws = Nothing
    End Sub
  4. Schließe den VBA-Editor.

  5. Führe das Makro aus, indem Du ALT + F8 drückst, das Makro auswählst und auf Ausführen klickst.


Häufige Fehler und Lösungen

  • Problem: Der Code findet nicht alle Einträge.

    • Lösung: Stelle sicher, dass die gesuchten Werte genau mit den in der Tabelle vorhandenen Werten übereinstimmen. Achte auf Leerzeichen und Groß-/Kleinschreibung.
  • Problem: Der Code gibt unerwartete Ergebnisse zurück.

    • Lösung: Überprüfe, ob die Zellen in Spalte C tatsächlich als Zahlen formatiert sind. Eventuell sind sie als Text formatiert, was zu Fehlern führen kann.
  • Problem: Der Code funktioniert nicht, wenn das Datum in Spalte C steht.

    • Lösung: Wenn die Werte als Datum formatiert sind, stelle sicher, dass die Weekday-Funktion korrekt aufgerufen wird. Manchmal kann es helfen, die Zellen als Datum zu formatieren.

Alternative Methoden

Eine alternative Methode zur Suche im Tabellenblatt ist die Verwendung der FILTER-Funktion (in Excel 365 verfügbar), die es Dir ermöglicht, nach bestimmten Kriterien zu filtern und die gewünschten Ergebnisse direkt anzuzeigen.

Beispiel:

=FILTER(A1:C100, (B1:B100="Montag")*(C1:C100=4), "Keine Ergebnisse")

Diese Formel filtert die Daten in den Zeilen 1 bis 100 und zeigt nur die Zeilen an, die den Kriterien entsprechen.


Praktische Beispiele

Angenommen, Du hast eine Tabelle, in der in Spalte B Wochentage und in Spalte C Zahlen stehen. Wenn Du beispielsweise alle Vorkommen von „Montag“ und „4“ hast, wird der folgende Code alle entsprechenden Zeilen in Spalte A markieren:

Sub test2()
    ' Der vorherige Code bleibt gleich
End Sub

Dieser Code funktioniert sowohl mit Datumswerten als auch mit Textwerten, vorausgesetzt, die Formatierung ist korrekt.


Tipps für Profis

  • Verwende die Find-Methode effizient, um die Performance zu verbessern, insbesondere bei großen Datenmengen.
  • Kombiniere die Find-Methode mit anderen Funktionen wie COUNTIF oder SUMIF, um noch komplexere Analysen durchzuführen.
  • Stelle sicher, dass Du regelmäßig Sicherungskopien Deiner Arbeitsdateien machst, bevor Du Makros ausführst.

FAQ: Häufige Fragen

1. Frage
Wie kann ich den Code anpassen, um nach einem anderen Tag zu suchen?
Antwort: Ändere einfach den Text "Montag" im Code zu dem gewünschten Wochentag, z.B. "Dienstag".

2. Frage
Funktioniert dieser Code in Excel 2010?
Antwort: Ja, der VBA-Code ist mit Excel 2010 und neueren Versionen kompatibel. Stelle sicher, dass Makros aktiviert sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige