Tabelle filtern - Ersatz des erweiterten Filters durch Formel
#1
Hallo liebe Helfer,

ich habe heute mal wieder ein Problem, dessen Lösung ich so nicht online finden konnte - oder ich bin mal wieder zu blöd, sie zu erkennen. Es geht um folgendes:

Ich habe eine Tabelle. 20 Spalten, davon sind aber nur 5 relevant für dieses Problem. Nun muss vor der Weiterverarbeitung der Daten die ganze Tabelle anhand einer der Spalten gefiltert werden. Es werden all die Zeilen benötigt, in denen in der betreffenden Spalte einer von 3 zu suchenden Werten steht. Alle Zeilen, in denen diese Spalte etwas anderes enthält, sollen ignoriert werden.

Entstehen soll daraus eine neue Tabelle auf einem anderen Tabellenblatt innerhalb derselben Datei. Aussehen soll das Ergebnis dann also GENAU so, als hätte ich in der Ausgangstabelle einfach einen Filter über die entscheidende Spalte gelegt.

Ich bin schon so weit gekommen, dass ich vermutlich in jede Spalte der sich ergebenden Tabelle eine Formel setzen muss, die auf die zu filternde Spalte schaut und dann den ihr zugehörigen Wert der nächsten Zeile übernimmt, in der das Filterkriterium zutrifft. Da am Ende nur 4 Spalten benötigt werden (die Spalte, in der gesucht wird, ist NICHT teil der später benötigten Tabelle und wird nur zum Filtern verwendet), ist es kein Problem, viermal die Formel anzupassen.

Nur hab ich leider keine Ahnung, wie ich das umsetzen soll. Klar, ich kann suchen lassen, wo sich in der entscheidenden Spalte die Filterbegriffe finden lassen, aber ich weiß weder, wie ich erreiche, dass dann die ganze Zeile ausgewertet wird, noch fällt mir ein Weg ein, dafür zu sorgen, dass immer direkt die nächste geeignete Zeile genommen wird und ich später keine Leerzeilen in meiner Ergebnistabelle habe.

Ich hoffe, es ist mir gelungen, mein Anliegen deutlich zu machen und irgendjemandem von euch fällt dazu was ein.

Vielen Dank im Voraus!

Gruß
Top
#2
Hi,

bin nur am Handy. Schau dir mal INDEX & VERGLEICH an. So wie ich dein Problem verstanden habe, müsstes du damit Ziel kommen.
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Top
#3
Hallo,

Als erste Reaktion erscheint mir eine Filterung mit Aggregate möglich, und die relevantrn Zeilen auszuwählen. Die anderen Spalten können dann mit verweis/vergleich/index eingefügt werden.

Mfg
Top
#4
Hallo,

hast Du das schon gelesen?

Spezialfilter (2) - Filtern nach Kriterien
Spezialfilter (4) - Filterergebnis in ein anderes Tabellenblatt

Gruß Uwe
Top
#5
@Fennek:
Aggregat() erst ab xl2010

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#6
Vielen Dank so weit für die Antworten, aber ich fürchte, ich verstehe das alles noch nicht so ganz... Kann mir vielleicht jemand ein konkretes Beispiel für die Umsetzung geben?

Dank und Gruß
Top
#7
Hi,

Zitat:Kann mir vielleicht jemand ein konkretes Beispiel für die Umsetzung geben?

klar, wenn wir wissen, wie deine Tabelle aussieht. :32:

Stelle uns bitte einen relevanten Tabellenausschnitt oder eine Mustertabelle vor. Die farbigen Texte sind anklickbare Links.
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Top
#8
Hallo,

ich habe mal kurz ein Beispiel gebastelt. Damit ich mir nichts ausdenken muss, habe ich die tatsächliche Datei genommen und bin mit Suchen-Und-Ersetzen einfach mal ein bisschen Amok gelaufen - wundert euch daher nicht über die seltsamen Sachen, die so in den Zellen stehen. Ich kann halt nicht einfach eine Datei meiner Firma unverändert raushauen, aber jetzt hat sie ohnehin nicht mehr viel mit dem Original zu tun.

In Tabelle 1 steht das gewünschte Ergebnis, in Tabelle 2 die Ausgangsdaten. Anmerkung dazu: Die Ausgangstabelle umfasst eigentlich sehr viel mehr Spalten, aber damit ich nicht so viel änder muss, habe ich die entfernt, da sie ohnehin nicht weiter verwendet werden.

Was ich gemacht habe, um aus Tabelle 2 (Ausgangsdaten) Tabelle 1 (gewünschtes Ergebnis) zu erzeugen:

1. Spalte B gefiltern
2. Im Filter für Spalte B die Häkchen bei READY und DEFIL rausgenommen
3. Alle übrig gebliebenen Zeilen (bis natürlich auf die erste, weil keine Überschrift vorhanden) gelöscht
4. Filter wieder entfernt
5. Zeile B gelöscht

Ergebnis: Ich habe für die restlichen 4 Spalten alle Zeilen übrig, in denen in Spalte B mal READY oder DEFIL stand.

Da dieser Vorgang öfters mit verschiedenen Ausgangstabellen wiederholt wird, soll das alles nun mit Formeln umgesetzt werden. Diese sollen also folgendes tun:

1. Suche in Tabelle 2 nach allen Zeilen, in denen READY oder DEFIL in Spalte B steht
2. Kopiere die Werte aus den Spalten A, C, D und E in Tabelle 2 in die Spalten A, B, C und D in Tabelle 1, und zwar nur die Zeilen, die in Schritt 1 ermittelt wurden
3. Die neuen Zeilen in Tabelle 1 sollen hintereinander weg geschrieben werden. Bei den Zeilen, in denen Spalte B (Tabelle 2) also nicht READY oder DEFIL entspricht, sollen NICHT einfach leere Zellen kopiert bzw. geschrieben werden. Stattdessen sind diese Zeilen komplett zu ignorieren.

Beispieldatei hängt an. Ich habe sie hier nicht als Tabellen einfügen wollen, weil sie sehr umfangreich ist (nebenbei, ich habe die Datei hier auch auf 500 Zeilen beschränkt - normalerweise sind es ein paar Tausend).

Gruß


Angehängte Dateien
.xlsx   Beispiel_20160226.xlsx (Größe: 112,5 KB / Downloads: 7)
Top
#9
Code:
Sub M_snb()
   With Sheet2
      .Rows(1).Insert
      .Cells(1).Resize(, 5) = Array("aa1", "aa2", "aa3", "aa4", "aa5")
      .Cells(1, 10).Resize(3) = Application.Transpose(Array(.Cells(1, 2), "READY", "DEFIL"))
      .Cells(1).CurrentRegion.AdvancedFilter 2, .Cells(1, 10).CurrentRegion, Sheet3.Cells(1)
   End With
End Sub
Top
#10
(26.02.2016, 13:17)snb schrieb:
Code:
Sub M_snb()
   With Sheet2
      .Rows(1).Insert
      .Cells(1).Resize(, 5) = Array("aa1", "aa2", "aa3", "aa4", "aa5")
      .Cells(1, 10).Resize(3) = Application.Transpose(Array(.Cells(1, 2), "READY", "DEFIL"))
      .Cells(1).CurrentRegion.AdvancedFilter 2, .Cells(1, 10).CurrentRegion, Sheet3.Cells(1)
   End With
End Sub

Das sieht zwar echt gut aus, aber die Anforderung (die ich explizit zu erwähnen vergessen habe) war, das Ganze mit Formeln und nicht mit VBS oder Makros irgendeiner Art umzusetzen...

Trotzdem danke! Vielleicht hilft's ja wem anders...
Top


Gehe zu:


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