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

Forumthread: VBA Zeile herausfinden mit 2 Bedingungen

VBA Zeile herausfinden mit 2 Bedingungen
06.03.2007 15:02:00
H.
Hallo Leute,
ich möchte mit VBA herausfinden, ob in einer Tabelle eine Zeile existiert, die zwei Bedingungen erfüllt. Diese Bedingungen sind die Inhalte zweier Zellen. Falls eine solche Zeile existiert, möchte ich deren Zeilen-Nummer erfahren, um mit ihr weiterarbeiten zu können.
Was ist, wenn zwei oder mehr dieser Zeilen existieren, auf die die Bedingungen zutreffen - sollte nicht sein, aber was ist wenn?
Danke für die Hilfe,
Christoph
P.S.: Feedback gibts von mir immer, nur ab und zu mit etwas Verzögerung...
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: VBA Zeile herausfinden mit 2 Bedingungen
06.03.2007 16:50:00
Jan
Was ist, wenn zwei oder mehr dieser Zeilen existieren, auf die die Bedingungen zutreffen - sollte nicht _
sein, aber was ist _
wenn?
Das müsstest du doch eigenlich wissen, was dan passieren soll. mfg Jan
AW: VBA Zeile herausfinden mit 2 Bedingungen
06.03.2007 17:38:00
firmus
Hi Christoph,
Beispiel einer Abfrage von Zellen.
auftreten = 0
For z = 2 To ActiveWorkbook.Sheets.Count 'skip headline
If Len(Cells(z, 1).Value) greater 0 And Mid(Cells(z, 7).Value, 1, 3) not equal "0.0" Then
auftreten = auftreten +1
Verarbeitung
endif
next z
if auftreten greater 1 then
verarbeitung, falls die Bedingungen 2-mal oder öfter auftreten.
endif
"not equal" und "greater" müssen durch entsprechende Zeichen ersetzt werden.
================
Deine erste Frage (geht das in excel...) ist: wie geht das formal, siehe oben.
Deine zweite Frage (zweites Auftreten...): das ist einfach "Programmlogik" - up to you.
Gruß,
Firmus
Anzeige
AW: VBA Zeile herausfinden mit 2 Bedingungen
06.03.2007 21:14:27
Daniel
Hallo
eine elegante methode, diese Zeile zu finden, ist der AUTOFILTER.
Das geht mit diesem Code (Bedingung ist "a" in Spalte A und "b" in Spalte B)
Sub Makro1()
Dim ze As Long
Dim Zeile As Long
ze = Cells(65536, 1).End(xlUp).Row
With Range("A1")
.AutoFilter Field:=1, Criteria1:="a"
.AutoFilter Field:=2, Criteria1:="b"
End With
Select Case Range("A1:A" & ze).SpecialCells(xlCellTypeVisible).Cells.Count
Case 1
MsgBox ("kein Treffer")
Case 2
Zeile = Cells(65536, 1).End(xlUp).Row
MsgBox ("Treffer Zeile " & Zeile)
Case Else
MsgBox ("mehrere Treffer. was nun tun?")
End Select
ActiveSheet.ShowAllData
End Sub

Gruß, Daniel
https://www.herber.de/bbs/user/40895.xls
Anzeige
Danke für die Vorschläge, setzte mich dran
07.03.2007 09:04:00
H.
Hi Leute,
da ist gestern ja doch noch einiges gekommen, hatte meine Hoffnungen schon fast begraben ;-)
Werde Eure Vorschläge im Laufe des Vormittags ausprobieren und mich dann erneut melden.
@ Jan - ich hab mich da wahrscheinlich schlecht ausgedrückt, ich meinte nicht was passieren soll, wenn zwei Zeilen diese Bedingungen erfüllen, sondern wie die Programmroutine reagiert, wenn dies geschieht, z.B. die erste/letzte Zeile oder einen Fehler auswirft.
Danke und bis gleich,
Christoph
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zeilen mit VBA herausfinden: Zwei Bedingungen prüfen


Schritt-für-Schritt-Anleitung

Um mit VBA in Excel herauszufinden, ob eine Zeile existiert, die zwei Bedingungen erfüllt, kannst Du folgendes Vorgehen nutzen:

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

  2. Füge ein neues Modul ein: Rechtsklick auf „VBAProject (DeineDatei)“ > Einfügen > Modul.

  3. Kopiere und füge den folgenden Code in das Modul ein:

    Sub ZeilenFindenMitBedingungen()
       Dim ze As Long
       Dim Treffer As Long
       ze = Cells(65536, 1).End(xlUp).Row
       Treffer = 0
    
       For z = 2 To ze
           If Cells(z, 1).Value = "Bedingung1" And Cells(z, 2).Value = "Bedingung2" Then
               Treffer = Treffer + 1
               MsgBox "Treffer in Zeile: " & z
           End If
       Next z
    
       If Treffer = 0 Then
           MsgBox "Keine Treffer gefunden."
       ElseIf Treffer > 1 Then
           MsgBox "Mehrere Treffer gefunden: " & Treffer
       End If
    End Sub
  4. Ersetze „Bedingung1“ und „Bedingung2“ durch die tatsächlichen Werte, die Du überprüfen möchtest.

  5. Führe den Code aus, um die Zeilen zu finden, die die Bedingungen erfüllen.


Häufige Fehler und Lösungen

  • Fehler: „Typen nicht übereinstimmend“

    • Lösung: Stelle sicher, dass die Werte in den Zellen den richtigen Datentyp haben, bevor Du sie vergleichst.
  • Fehler: „Index außerhalb des Bereichs“

    • Lösung: Überprüfe, ob Du in der richtigen Range arbeitest und ob die Zielzellen tatsächlich existieren.

Alternative Methoden

Eine weitere Methode zur Suche nach Zeilen mit bestimmten Bedingungen ist die Verwendung des AutoFilters. Dabei kannst Du den folgenden VBA-Code nutzen:

Sub AutoFilterMethode()
    Dim ze As Long
    ze = Cells(65536, 1).End(xlUp).Row
    With Range("A1:B" & ze)
        .AutoFilter Field:=1, Criteria1:="Bedingung1"
        .AutoFilter Field:=2, Criteria1:="Bedingung2"
        If Application.WorksheetFunction.Subtotal(103, Range("A:A")) > 1 Then
            MsgBox "Mehrere Treffer gefunden."
        ElseIf Application.WorksheetFunction.Subtotal(103, Range("A:A")) = 1 Then
            MsgBox "Ein Treffer gefunden."
        Else
            MsgBox "Keine Treffer."
        End If
        .AutoFilter
    End With
End Sub

Diese Methode eignet sich besonders gut, wenn Du mit großen Datenmengen arbeitest.


Praktische Beispiele

Hier sind einige praktische Beispiele zur Anwendung der beschriebenen Methoden:

  1. Bedingung: Finde alle Zeilen, wo Spalte A „Verkauf“ und Spalte B „2023“ ist.

    • Ersetze die Bedingungen im VBA-Code entsprechend.
  2. Bedingung: Suche nach Kombinationen aus verschiedenen Spalten in einer großen Datenbank.

    • Verwende die AutoFilter-Methode für eine schnellere und visuellere Analyse.

Tipps für Profis

  • Nutze Option Explicit am Anfang Deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind.
  • Teste Deine VBA-Skripte immer an einer Kopie Deiner Daten, um Datenverlust zu vermeiden.
  • Verwende Debug.Print, um Werte während der Ausführung zu überprüfen und Probleme zu diagnostizieren.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Bedingungen in einer Zeile überprüfen? Du kannst die Bedingungen einfach mit dem And oder Or Operator verknüpfen, um mehrere Kriterien zu kombinieren.

2. Was passiert, wenn keine Zeilen die Bedingungen erfüllen? Im Beispielcode wird eine MessageBox angezeigt, die informiert, dass keine Treffer gefunden wurden.

3. Kann ich die Suche auf bestimmte Spalten beschränken? Ja, indem Du die entsprechenden Spalten in Deinem VBA-Skript angibst, kannst Du die Suche gezielt steuern.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige