Das Clever-Excel-Forum.de - Treffen
... 14.-16. September 2018 im Allgäu ...

Überprüfen ob Wert in Filter existiert?
#1
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 Smile
to top
#2
Hallöchen,

Du könntest vorher die Spalte mit ZÄHLENWENN bzw. COUNTIF auf das Vorhandensein des Wertes prüfen.
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
to top
#3
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.
to top
#4
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
Gruß Atilla
to top
#5
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?
to top
#6
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.
Gruß Atilla
to top
#7
Die 1. Variante gibt einen Laufzeitfehler aus,
Die 2. Variante funktioniert.

Klasse damit komme ich klar, vielen Dank 21 18
to top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste