Clever-Excel-Forum

Normale Version: Überprüfen ob Wert in Filter existiert?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

vielen Dank für die Aufnahme.

Ich habe ein Wert in einer Zelle (nennen wir Sie A1) und möchte diese an einem Filter übergeben. Jedoch möchte ich vorher überprüfen, ob es den Wert überhaupt gibt.
Wenn ich einen Wert an den Filter übergebe, den es nicht gibt, passiert nur Murks.


ActiveSheet.ListObjects("Tabelle1").Range.AutoFilter Field:=1, Criteria1:=Sheets(1).Range("A1").Value



Ich habe mir überlegt den Check mit einem SVerweis auf die ganze Tabelle anzuwenden, jedoch ist die Tabelle ziemlich groß und auch die Länge variiert.
Der Filter enthält jedoch nur etwa mögliche 100 Einträge.


Vielen Dank :)
Hallöchen,

Du könntest vorher die Spalte mit ZÄHLENWENN bzw. COUNTIF auf das Vorhandensein des Wertes prüfen.
Danke,

leider noch nicht so ganz. weiß noch nicht wie ich im Makro ein bauen soll.

COUNTIFS(Sheets(1).Range("A7:A150");Sheets(1).Range("A1").Value)

funktioniert irgendwie nicht.
Kannst du  mir noch mal bitte auf die Sprünge helfen.
Hallo,

nach folgendem Muster:


Code:
If Application.CountIf(ActiveSheet.ListObjects("Tabelle1").Columns("A"), Sheets(1).Range("A1").Value) Then
 'hier der Code, was passieren soll wenn vorhanden
Else
 MsgBox Sheets(1).Range("A1").Value & " in Spalte A der Tabelle1 nicht vorhanden"
End If
hmm das sieht verdammt gut aus. Danke   Ergibt Aber Leider ein Laufzeitfehler.

Der Filter ist in Der Zelle A6 Und die eigentliche Tabelle beginnt ab A7. Könnte das was mit dem Laufzeitfehler zu tun haben?
Hallo,

bin mit Listobjecten nicht so vertraut, deswegen fehlte noch etwas:


Code:
Sub test()
If Application.CountIf(ActiveSheet.ListObjects("Tabelle1").ListColumns("A").DataBodyRange, Sheets(1).Range("A1").Value) Then
'hier der Code, was passieren soll wenn vorhanden
Else
MsgBox Sheets(1).Range("A1").Value & " in Spalte A der Tabelle1 nicht vorhanden"
End If
End Sub


Teheoretisch ginge es auch so:


Code:
Sub test2()
If Application.CountIf(Columns("A"), Sheets(1).Range("A1").Value) Then
'hier der Code, was passieren soll wenn vorhanden
Else
MsgBox Sheets(1).Range("A1").Value & " in Spalte A der Tabelle1 nicht vorhanden"
End If
End Sub


vorausgesetzt es sind unter und über der tabelle keine anderen Daten, die in die Quere kommen können.
Die 1. Variante gibt einen Laufzeitfehler aus,
Die 2. Variante funktioniert.

Klasse damit komme ich klar, vielen Dank :21: :18: