Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1608to1612
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

1 Suchbegriff in 2 Spalten filtern

1 Suchbegriff in 2 Spalten filtern
28.02.2018 15:33:08
Anja
Hallo,
ich habe eine Tabelle mit vielen verschiedenen Daten. Aus Gründen gibt es mehrere Spalten die den gleichen Inhalt haben können. Um eine Zusammenfassung zu erstellen muss ich bisher erst die eine Spalte filtern, die Daten rausnehmen, Filter zurücksetzen und dann die 2. Spalte filtern.
Dies geht sicher auch anders, habe auch schon im Internet gesucht aber bin noch nicht richtig auf die Lösung gestoßen. Zumal auch jeder mehrere Kriterien sucht, ich brauch tatsächlich nur eins.
In dem Thread https://www.herber.de/forum/archiv/1212to1216/1212067_VBA_Filter_mit_mehreren_Kriterien_4_Spalten.html
gab es vom User Tino am 28.04.11 einen interessanten Lösungsansatz, der mir auch in der Funktionalität gut gefällt. (mit einem Button die Liste entsprechend verändern)
Leider habe ich anhand der Codes nicht erkennen können wie diese funktionieren bzw. was ich ändern muss, damit es auf meine Liste passt. Vielleicht habe ich es auch falsch verstanden und das ist nicht die Lösung die ich suche.
https://www.herber.de/bbs/user/120115.xlsx
Ich habe mal eine Beispieldatei erstellt. Es gibt verschiedene Kunden und diese können 1 oder mehrere Partner haben. Wenn ich auf den Button "Partner selektieren" klicke, möchte ich gern, dass nur noch die Zeilen angezeigt werden die den Partner in Zelle C1 haben. Also die Zeilen 5, 6 und 8 müssen herauskommen. Und natürlich braucht man noch einen Button mit dem man die Anzeige zurücksetzt.
Ich hoffe es ist klar und mich kann jemand erleuchten.

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: 1 Suchbegriff in 2 Spalten filtern
28.02.2018 15:43:32
Anja
Okay ich habe schon mal einen "Lesefehler" des Codes von mir entdeckt. Hier wird nicht mit der Zellbezeichnung gearbeitet, sondern mit "rows" für die Spalte und "cells" für die Zeile in der Suchmatrix. Also ist RC2 die 1. Spalte und 2. Zeile, also Zelle B6, der Suchmatrix. (bezogen auf das von mir genannte Beispiel.)
Ich kopiere auch mal den Code hier hinein. Ich komme trotzdem noch zu keinem Ergebnis da mir unklar ist wo dem Makro gesagt wird wo er die Suchkriterien findet.
Option Explicit
Sub SpezialFilter()
Dim rngBereich As Range, FilterCrit As Range, iCalc As Integer
With Application
iCalc = .Calculation
.ScreenUpdating = False
.Calculation = xlCalculationManual
With Tabelle1
If .FilterMode Then .ShowAllData
.Cells.EntireRow.Hidden = False
Set rngBereich = .Range("B5", .Cells(.Rows.Count, 2).End(xlUp)).Resize(, 5)
End With
With rngBereich
Set FilterCrit = .Cells(1, .Columns.Count).Resize(2, 1)
FilterCrit(2, 1).FormulaR1C1 = "=AND(RC2=R2C2,OR(RC3=R2C3,RC4=R2C3,RC5=R2C3))"
.AdvancedFilter xlFilterInPlace, FilterCrit
FilterCrit(2, 1).ClearContents
End With
.Calculation = iCalc
.ScreenUpdating = True
End With
End Sub
Sub Alles_Anzeigen()
With Tabelle1
If .FilterMode Then .ShowAllData
.Cells.EntireRow.Hidden = False
End With
End Sub

Anzeige
AW: 1 Suchbegriff in 2 Spalten filtern
28.02.2018 15:57:08
Daniel
HI
das würde ich ganz einfach mit einer Hilfsspalte und dem Autofilter lösen:
1. in die erste freie Spalte am Tabellenende (bzw nach der letzten "Partner"-Spalte eine Spalte einfügen) kommt diese Formel.
Bei dir muss die Formel in die Zelle D5, dann bis zum Datenende runterziehen:
=Wenn(ZählenWenn(B5:C5;$C$1);"Partner vorhanden";"kein Partner")
2. Setze den Autofilter und filtere in der Spalte D nach "Partner vorhanden"
Wenn der Autofilter bereits eingerichtet ist und du nachträglich den Wert in C1 geändert hast, reicht ein Klick auf den Menübutton: DATEN - SORTIEREN UND FILTERN - ERNEUT ANWENDEN
ein Makro ist damit überflüssig.
zur Erläuterung:
wenn du der WENN-Funktion im ersten Parameter anstelle des erwarteten WAHR oder FALSCH eine Zahl gibst, wird die 0 als FALSCH und jede andere Zahl als WAHR verwendet.
Daher kann man anstelle von ZählenWenn(...)>0 auch einfach ZählenWenn(...) in der WENN-Funktion verwenden.
Gruß Daniel
Anzeige
AW: 1 Suchbegriff in 2 Spalten filtern
01.03.2018 07:41:55
Anja
Hallo Daniel,
danke für den Lösungsansatz. Dieser funktioniert schon mal sehr gut!
Da die Tabelle aber sehr groß ist und auch viele Spalten hat, wäre es mir tatsächlich lieb, wenn es eine Lösung ohne noch eine weitere Spalte gibt. Ziel ist es, die Bedienung so einfach, schnell und effizient wie möglich zu machen, da viele Exceltabellen und viele Daten manuell gepflegt und reportet werden müssen.
AW: 1 Suchbegriff in 2 Spalten filtern
01.03.2018 09:44:46
Anja
Bin noch auf ein zusätzliches Problem gestoßen mit der Formelfunktion. Wenn ich das Suchkriterium ändere, aktualisiert er sich nicht mehr. Man müsste in die Zelle gehen und nochmals mit Enter bestätigen oder die Datei abspeichern. Aber just in time tut sich da nix. Das macht es auch schon wieder komplizierter. :( Da nicht nur ich dran arbeite, sondern verschiedene Personen, muss die Bedienung möglichst intuitiv und einfach sein.
Der VBA Code ist ja gar nicht schlecht und funktioniert. Ich weiß nur nicht wie ich dem sage, dass er alle Zeilen ausspucken soll die den Suchbegriff in Spalte 1 oder in Spalte 2 haben (derzeit gibt er leider nur das aus, wo der Suchbegriff in der 1. Spalte enthalten ist) und wo im Code der Bezug zur Zelle hergestellt wird, in der der Suchbegriff steht. Kann mir da vielleicht jemand weiterhelfen?
Anzeige
AW: 1 Suchbegriff in 2 Spalten filtern
01.03.2018 10:57:21
Daniel
naja, du musst natürlich die automatische Neuberechnung einschalten und nach dem Ändern des Wertes in C1 den Filter aktualiseren, in dem du die Entsprechende Menüfunktion anklickst.
Wenn das zu kompliziert ist, kannst du natürlich auch die Menüfunktion durch deinen Button ausführen lassen, der Befehl ist:
ActiveSheet.AutoFilter.ApplyFilter
ohne Hilfsspalte funktioniert dieser Code.
den Befehl zum Einblenden aller Zellen findest du auch in diesem Code, dh du kannst ihn dort rauskopieren, wenn du das als eigenständigen Button haben willst:
Sub Ausblenden()
Dim Zelle As Range
Dim Bereich As Range
Cells.EntireRow.Hidden = False
For Each Zelle In Range(Cells(5, 1), Cells(4, 1).End(xlDown))
If WorksheetFunction.CountIf(Zelle.Offset(0, 1).Resize(, 2), Range("C1").Value) = 0 Then
If Bereich Is Nothing Then
Set Bereich = Zelle
Else
Set Bereich = Union(Bereich, Zelle)
End If
End If
Next
If Not Bereich Is Nothing Then Bereich.EntireRow.Hidden = True
End Sub
Gruß Daniel
Anzeige
AW: 1 Suchbegriff in 2 Spalten filtern
05.03.2018 11:37:59
Anja
Hallo,
so ich habe ein wenig herumprobiert. Dein Code funktioniert gut und ich verstehe ihn soweit, dass ich ihn auch anpassen kann auf meine echte Datei.
Ich habe nur ein Problem. In der echten Datei dauert das Filtern sehr lange. Weiß jemand was das verursachen kann?
In der Testdatei läuft alles einwandfrei. Ich habe auch versucht ein paar Sachen nachzustellen. Die Testdatei hat nun mehr KB als die Originale. Ich habe einige Formatierungen (Rahmenlinien, Farbfüllungen) vorgenommen und auch weitere Daten hinterlegt und zusätzliche Tabellenblätter mit Inhalt gefüllt. Außerdem habe ich ein paar bedingte Formatierungen hinzugefügt. So wie bei der Originalen bzw. jetzt noch mehr von allem.
Auch den Suchbereich habe ich erweitert. Denn im Original sind die zu durchsuchenden Spalten nicht direkt nebeneinander. Also habe ich "Resize" auf 4 gesetzt.
Aber all das führte nicht dazu, dass das Filtern länger dauert. Daher kann ich mir die Ursache einfach nicht erklären.
Anzeige

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige