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

Forumthread: Tabelle nach mehreren Kriterien durchsuchen

Tabelle nach mehreren Kriterien durchsuchen
15.05.2017 14:09:31
Lisa
Hallo zusammen,
ich habe mit VBA eine User Form programmiert, mit der man eine Liste nach mehreren Kriterien durchsuchen kann (WNV, Verfahrensnummer, Lack, Glanz, Sachnummer).
Das funktioniert soweit auch ganz gut, jedoch habe ich festgestellt, dass nicht immer nur in der gewollten Spalte gesucht wird.
Beispiel: In der Tabelle steht WNV in Spalte B, Farbe in Spalte D, Sachnummer in Spalte F.
Ich suche nach der Farbe "70", die anderen Suchfelder werden freigelassen. Nun erscheint im Suchergebnis auch die Farbe 46, da ihre Sachnummer die 70 enthält.
Allerdings passiert das nur bei Spalten, die rechts von meiner Suchspalte liegen. Eine WNV 70 wird zum Beispiel nicht mit angezeigt.
Ich stehe ein bisschen auf dem Schlauch, könnt ihr mir vielleicht auf die Sprünge helfen?
Viele Grüße
Lisa
Private Sub Cmd_Suchen_Click()
Dim Bereich As Range
Dim Zelle As Range
Dim Box_Leer As Boolean
box_Suchergebnis.Clear
Box_Leer = True
'Listbox formatieren
With box_Suchergebnis
.Clear
.ColumnCount = 7
strWidth = (.Width) / 7
.ColumnWidths = strWidth & ";" & strWidth & ";" & strWidth + 10 & ";" _
& strWidth - 10 & ";" & strWidth & ";" & strWidth & ";" & strWidth
End With
'Suchbereich bestimmen
With Worksheets("Konsolidierung").UsedRange
strSuche = .Cells(.Rows.Count, .Columns.Count).Address
Set Bereich = Range("B2:" & strSuche)
End With
If txt_WNV.Value = "" And txt_Verfahrensnummer.Value = "" And txt_Farbe.Value = "" _
And txt_Glanz.Value = "" And txt_Sachnummer.Value = "" Then
MsgBox ("Bitte geben Sie mindestens ein Suchkriterium ein")
Else
For Each Zelle In Bereich
If (Zelle.Value Like "*" & txt_WNV.Value & "*" Or txt_WNV.Value = "") _
And (Zelle.Offset(0, 1) Like "*" & txt_Verfahrensnummer.Value & "*" _
Or txt_Verfahrensnummer.Value = "") _
And (Zelle.Offset(0, 2) Like "*" & txt_Farbe.Value & "*" _
Or txt_Farbe.Value = "") _
And (Zelle.Offset(0, 3) Like "*" & txt_Glanz.Value & "*" _
Or txt_Glanz.Value = "") _
And (Zelle.Offset(0, 4) Like "*" & txt_Sachnummer.Value & "*" _
Or txt_Sachnummer.Value = "") Then
'Suchergebnis in Listbox schreiben
With box_Suchergebnis
.AddItem
.List(.ListCount - 1, 0) = Cells(Zelle.Row, 2)
.List(.ListCount - 1, 1) = Cells(Zelle.Row, 3)
.List(.ListCount - 1, 2) = Cells(Zelle.Row, 4)
.List(.ListCount - 1, 3) = Cells(Zelle.Row, 5)
.List(.ListCount - 1, 4) = Cells(Zelle.Row, 6)
.List(.ListCount - 1, 5) = Cells(Zelle.Row, 7)
End With
Box_Leer = False
End If
Next
If Box_Leer = True Then MsgBox ("Keine Daten gefunden")
End If
End Sub

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabelle nach mehreren Kriterien durchsuchen
15.05.2017 15:50:10
fcs
Hallo Lisa,
due muss in diesem Abschnitt des Makros
'Suchbereich bestimmen
With Worksheets("Konsolidierung").UsedRange
strSuche = .Cells(.Rows.Count, .Columns.Count).Address
Set Bereich = Range("B2:" & strSuche)
End With
die letzte Zeile bestimmen und den Bereich nur für Spalte B Setzen.
'Suchbereich bestimmen
With Worksheets("Konsolidierung").UsedRange
lngZeile = .Rows.Count
Set Bereich = Range("B2:B" & lngZeile )
End With
Später wird ja dann mit Zelle.Offset(0, x)die zu vergleichende Zelle festgelegt.
LG
Franz
Anzeige
AW: Tabelle nach mehreren Kriterien durchsuchen
16.05.2017 07:49:13
Lisa
Herzlichen Dank, es funktioniert! :)

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Tabelle nach mehreren Kriterien durchsuchen


Schritt-für-Schritt-Anleitung

Um eine Tabelle nach mehreren Kriterien in Excel zu durchsuchen, kannst du das folgende VBA-Makro verwenden. Achte darauf, dass du in der richtigen Excel-Version arbeitest, die VBA unterstützt (z.B. Excel 2010 oder höher).

  1. Öffne Excel und erstelle eine User Form.
  2. Füge Textfelder für die Suchkriterien (z.B. WNV, Verfahrensnummer, Farbe, Glanz, Sachnummer) hinzu.
  3. Füge eine Listbox hinzu, um die Suchergebnisse anzuzeigen.
  4. Implementiere den folgenden VBA-Code in das Click-Event deines Such-Buttons:
Private Sub Cmd_Suchen_Click()
    Dim Bereich As Range
    Dim Zelle As Range
    Dim Box_Leer As Boolean
    box_Suchergebnis.Clear
    Box_Leer = True
    'Listbox formatieren
    With box_Suchergebnis
        .Clear
        .ColumnCount = 7
        strWidth = (.Width) / 7
        .ColumnWidths = strWidth & ";" & strWidth & ";" & strWidth + 10 & ";" _
                       & strWidth - 10 & ";" & strWidth & ";" & strWidth & ";" & strWidth
    End With
    'Suchbereich bestimmen
    With Worksheets("Konsolidierung").UsedRange
        lngZeile = .Rows.Count
        Set Bereich = Range("B2:B" & lngZeile)
    End With
    If txt_WNV.Value = "" And txt_Verfahrensnummer.Value = "" And txt_Farbe.Value = "" _
    And txt_Glanz.Value = "" And txt_Sachnummer.Value = "" Then
        MsgBox ("Bitte geben Sie mindestens ein Suchkriterium ein")
    Else
        For Each Zelle In Bereich
            If (Zelle.Value Like "*" & txt_WNV.Value & "*" Or txt_WNV.Value = "") _
            And (Zelle.Offset(0, 1) Like "*" & txt_Verfahrensnummer.Value & "*" _
            Or txt_Verfahrensnummer.Value = "") _
            And (Zelle.Offset(0, 2) Like "*" & txt_Farbe.Value & "*" _
            Or txt_Farbe.Value = "") _
            And (Zelle.Offset(0, 3) Like "*" & txt_Glanz.Value & "*" _
            Or txt_Glanz.Value = "") _
            And (Zelle.Offset(0, 4) Like "*" & txt_Sachnummer.Value & "*" _
            Or txt_Sachnummer.Value = "") Then
                'Suchergebnis in Listbox schreiben
                With box_Suchergebnis
                    .AddItem
                    .List(.ListCount - 1, 0) = Cells(Zelle.Row, 2)
                    .List(.ListCount - 1, 1) = Cells(Zelle.Row, 3)
                    .List(.ListCount - 1, 2) = Cells(Zelle.Row, 4)
                    .List(.ListCount - 1, 3) = Cells(Zelle.Row, 5)
                    .List(.ListCount - 1, 4) = Cells(Zelle.Row, 6)
                    .List(.ListCount - 1, 5) = Cells(Zelle.Row, 7)
                End With
                Box_Leer = False
            End If
        Next
        If Box_Leer = True Then MsgBox ("Keine Daten gefunden")
    End If
End Sub

Häufige Fehler und Lösungen

  1. Fehler: Keine Daten gefunden

    • Lösung: Überprüfe, ob mindestens ein Suchkriterium eingegeben wurde. Wenn alle Felder leer sind, wird kein Ergebnis angezeigt.
  2. Fehler: Falsche Ergebnisse aufgrund von Offset

    • Lösung: Stelle sicher, dass der Suchbereich nur auf die relevante Spalte beschränkt ist. Ändere den Bereich in der Zeile, die den Suchbereich bestimmt, um nur auf Spalte B zu verweisen.

Alternative Methoden

Eine alternative Methode, um mehrere Kriterien zu durchsuchen, ist die Verwendung von Excel-Funktionen wie FILTER oder SUMPRODUCT. Diese Funktionen sind hilfreich, wenn du keine VBA-Programmierung verwenden möchtest.

Ein Beispiel für FILTER könnte so aussehen:

=FILTER(A2:D100, (B2:B100="70") * (C2:C100<>""), "Keine Ergebnisse")

Praktische Beispiele

Angenommen, du hast eine Tabelle mit den folgenden Spalten: WNV, Verfahrensnummer, Farbe, Glanz, Sachnummer. Du möchtest nach der Farbe "70" suchen:

  1. Trage "70" in das entsprechende Textfeld ein.
  2. Lasse die anderen Textfelder leer.
  3. Klicke auf den Suchen-Button.

Das Ergebnis zeigt dir alle Datensätze, die die Farbe "70" enthalten, ohne dass die Sachnummer beeinflusst wird.


Tipps für Profis

  • Optimiere deinen VBA-Code, indem du Option Explicit am Anfang deiner Module hinzufügst. Das hilft dir, potenzielle Fehler durch nicht deklarierte Variablen zu vermeiden.
  • Verwende Application.ScreenUpdating = False, um das Flackern des Bildschirms während der Ausführung des Makros zu verhindern, und setze es am Ende wieder auf True.
  • Nutze die Debug.Print-Funktion, um die Werte während der Ausführung zu überprüfen, falls du Schwierigkeiten beim Debuggen hast.

FAQ: Häufige Fragen

1. Wie kann ich die Suchkriterien erweitern? Du kannst weitere Textfelder zur User Form hinzufügen und den VBA-Code entsprechend anpassen, um zusätzliche Spalten zu durchsuchen.

2. Funktioniert das Makro in allen Excel-Versionen? Das Makro funktioniert in den meisten Versionen von Excel, die VBA unterstützen, z.B. Excel 2010 und höher. Achte darauf, dass die Sicherheitsoptionen VBA erlauben.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige