Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1808to1812
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Tabelle filtern

Tabelle filtern
04.02.2021 12:44:05
Stefan
Hallo,
ich möchte gerne eine Spalte filtern nach folgenden Vorgaben:
1. mehrere Suchwörter mittels Datenschnitt oder Checkbox auswählbar
2. die Suchwörter sollen mit auswählbarer UND- oder ODER-Verknüpfung verbunden werden
Also zeige in der zu durchsuchenden Spalte nur die Zeilen an, wo folgender Text gefunden wird:
z.B.: Text1
Text1 UND Text2
Text3 ODER Text4
Ich hoffe, jemand hat eine Idee, ich habe nämlich so gar keinen Ansatz, wie ich da vorgehen soll.
Danke im voraus :-)

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabelle filtern
04.02.2021 13:00:25
MCO
Hallo Stefan!
Mit den bordmitteln ist man da nur sehr begrenzt unterwegs.
Mein Ansatz geht in die Richtung, dass man via VBA die Datensätze durchnudelt und enweder eine Hilfsspalte mit einem Wert (1/0, WAHR/FALSCH, JA/NEIN) füllt und auf diesen filtert, oder die betroffenen Datensätze einfärbt und abschließend nach der Farbe filtert.
Das hat den Vorteil, dass du auf mehrere Spalten schauen kannst um die Daten zu bewerten.
Nachteil ist: Du musst VBA verwenden. Aber dafür hast du ja dann das Forum.
Für konkretere Lösungsvorschläge (auch für andere Helfer) ist es sinnvoll, eine Beispieldatei hochzuladen.
Gruß, MCO
Anzeige
AW: Tabelle filtern
04.02.2021 18:55:30
Piet
Hallo
wenn du mit VBA ein wenig bewandert bist hilft dir dieser Code weiter. Er kommt in das Tabellenblatt welches du filtern willst und wird durch Eingabe in eine Zelle gestartet. Beim löschen der Eingabe setzt sich der Autofilter wieder auf Null zurğck.
mfg Piet
Dim lz1 As Long, LSpa As Integer  'LastSpalte
Dim Txt As String, Txt2 As String
'Makro für intelligenten Autofilter!!
'filtert auch verknüpfte Werte, zwei Texte
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fehler
If Target.Count > 1 Then Exit Sub
If Target.Address(0, 0) = "B2" Then
Target.Select
ActiveSheet.AutoFilterMode = False
If Target.Value = "" Then Exit Sub
Txt = Empty:  Txt2 = Empty
Txt = "*" & Target.Value & "*"
lz1 = Cells(Rows.Count, 2).End(xlUp).Row
LSpa = Cells(1, 8).End(xlToRight).Column
'Filter Eingabe ohne Komma
If InStr(Txt, ",") = 0 Then
Range("A4").Resize(lz1, LSpa).AutoFilter Field:=2, Criteria1:=Txt
End If
'Filter Eingabe mit Komma, zweiter Text (und verknüpft)
If InStr(Txt, ",") Then
Txt2 = "*" & Trim(Mid(Txt, InStr(Txt, ",") + 1))
Txt = Trim(Left(Txt, InStr(Txt, ",") - 1)) & "*"
Range("A4").Resize(lz1, LSpa).AutoFilter Field:=2, _
Criteria1:=Txt, Operator:=xlAnd, Criteria2:=Txt2
End If
Fehler:
End If
End Sub

Anzeige
AW: Tabelle filtern
06.02.2021 12:31:05
Stefan
Hallo Piet,
danke für den VBA code, ist für mich allerdings Neuland. Was bedeutet "wird durch Eingabe in eine Zelle gestartet"? Könntest du das an Hand der hochgeladenen Beispieldatei realisieren?
Danke & Gruß,
Stefan
AW: Tabelle filtern
06.02.2021 21:08:47
Piet
Hallo Stefan
die Aufgabe hat mich mehr Nachdenken gekostet als geplant. Das Problem war die Intelligente Tabelle und der Autofilter in dieser Tabelle in der Spalte B. Überlege bitte einmal selbst: - sobald Daten übertragen werden überschreibt man sich immer den Autofilter! Böse Überraschung.
Im Beispiel habe ich alles so umgestellt das es wenigstens problemlos funktioniert. Ob dir das Layout gefaellt ist eine andere Sache. Wenn du es aenderst willst musst du bitte auch die Adressen im Makro auf den neuen Bereich aendern!
Ich bin mal gespannt wie dir diese Arbeit gefaellt?
https://www.herber.de/bbs/user/143680.xlsm
mfg Piet
Anzeige
AW: geschlossen oWT
08.02.2021 00:34:15
Piet
...
AW: Tabelle filtern
08.02.2021 11:09:19
Stefan
Hallo Piet,
erstmal herzlichen Dank für deine Arbeit. Zum Code kann ich leider nix sagen, dafür langen meine Kenntnisse nicht. Aber so wie das Makro arbeitet, sieht es schon mal grundsätzlich gut aus. Nur: es liefert leider nicht immer die erwarteten Ergebnisse.
Noch mal zur Erläuterung: Die Daten in Spalte A sind fix, d.h. was einmal so drin steht, bleibt für alle Zeiten so stehen, es kommen lediglich immer neue Daten (Zeilen) hinzu.
Wenn ich nun diese Daten an Hand der Keywords filtere, sollen nur die gefundenen Daten angezeigt und die Keywords für diese Datensätze in die Spalte B eingetragen werden und für alle Zeiten darin stehen bleiben.
Das Makro soll also Spalte A anhand der selektierten Keywords filtern und dann bei den gefilterten Daten in Spalte B die selektierten Keywords eintragen.
Könntest du dein Makro dahingehend nochmal überprüfen/ändern?
Vielen lieben Dank im voraus :-)
Gruß, Stefan
Anzeige
AW: Tabelle filtern
08.02.2021 13:27:03
Piet
Hallo Stefan
das ist der Code um die Ereignis Tabelle auszuwerten. Ich lösche nur die Spalte B!
Dem Button must du den neuen Makro Namen zuweisen: "Ergebnis_Tabelle_auswerten"
Den alten Code kannst du löschen oder stehen lassen. Zuweisen über rechte Maustaste.
mfg Piet
Option Explicit             '8.2.3021   Piet   für Herber Forum
Dim AC As Range, lz1 As Long
'Makro zum Ereignis Tabelle auswerten
Sub Ergebnis_Tabelle_auswerten()
Dim CBox As Integer, n As Long
Dim flg As String, Txt As String
Dim WArry() As String, j As Long
With Worksheets("gewünschtes Ergebnis")
CBox = .Range("A1").Value
If CBox = 1 Or CBox = 2 Then Else _
MsgBox "Ungültiger Wert in Zelle D1 = 1 oder 2!" & _
vbLf & "Bitte korrekte Option auswählen ": Exit Sub
'Ergebnistabelle immer löschen
lz1 = .Range("A13").End(xlDown).Row
If .Range("A14").Value = "" Then Exit Sub
.Range("B14:B" & lz1).ClearContents
'LastZell im Autofilter suchen
n = .Cells(1, 2).End(xlDown).Row
If j >= 13 Then n = 10
'Variable 1+2 aus DropDown Zelle laden
'** nach Zelle verschieben Adresse korrigieren!
For Each AC In .Range("B2:B" & n)
ReDim Preserve WArry(0 To j)
If AC.EntireRow.Hidden = False Then
WArry(j) = AC.Value: j = j + 1
'Kriterien Texte addieren
If CBox = 1 Then Txt = Txt & " & " & AC
If CBox = 2 Then Txt = Txt & "; " & AC
End If
Next AC:  n = 0
'Schleife in Ausgangs Tabelle zum auswerten
For Each AC In .Range("A2:A" & lz1)
flg = Empty  '"Ok" immer Flag löschen
For j = LBound(WArry) To UBound(WArry) - 1
If InStr(AC, WArry(j)) And InStr(AC, WArry(j + 1)) Then
If CBox = 1 Then flg = "Ok"
ElseIf InStr(AC, WArry(j)) Or InStr(AC, WArry(j + 1)) Then
If CBox = 2 Then flg = "Ok"
End If
Next j
'Wert in Ergebnis Tabelle kopieren
If flg = "Ok" Then
AC.Cells(1, 2) = Trim(Mid(Txt, 3))
n = n + 1
End If
Next AC
'** MsgBox Anzeige (kann gelöscht werden)
MsgBox n & "  Daten gefunden"
End With
End Sub

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige