PDA

Vollständige Version anzeigen : Tabelle aus Tabelle


VBA-anfänger321
07.09.2011, 12:49
Hallo Zusammen,

wer kann mir sagen, wie ich eine extra Auswertung aus einer bestehenden Tabelle bekomm. Soll so aussehn, dass ich eine Tabelle habe mit 180 Spalten und 20000 Zeilen....
die neue Tabelle soll nur die Zeilen (je Zeile ist jeweils ein Kunde) enthalten, die ein bestimmtes Merkmal haben.... also z.B alle Zeilen die in der Spalte M eine Zahl grösser 0 haben sollen in einer extra Tabelle ausgegeben werden .... so dass mit dieser weitergearbeitet werden kann .... hoffe ich habs verständlich rübergebracht !
Danke!!!
PS: hab das mit "Filtern gelöst" würde es aber gerne per Formel lösen.....

chris-kaiser
07.09.2011, 13:39
Hi

PS: hab das mit "Filtern gelöst" würde es aber gerne per Formel lösen.....

180 Spalten 20 000 Zeilen

und du willst dafür jetzt wirklich 3,6 Mill. Formeln in einem anderen Tabellenblatt haben?

Ich würde beim Filter bleiben!

EarlFred
07.09.2011, 13:46
Hallo VBA-anfänger321,

Formeln würd ich auch sein lassen....

Wie wär's denn, Deinen Nicknamen von "VBA-anfänger321" auf "VBA-geübter321" upzugraden und Du schreibst Dir ein Makro, das
(1) den Filter nach Deinen Bedingungen setzt und
(2) alle gefilterten Datensätze in das gewünschte Blatt kopiert?
(bis hierher hilft der Makrorekorder als Grundlage für einen sauberen Code)
(3) Das Makro dann noch z. B. dem Ereignis "Worksheet_Activate" des Zielblattes zuweisen, damit die Daten beim Auswählen des Blattes immer aktualisiert werden (geht in Bruchteilen von Sekunden, wenn's richtig gemacht wurde).

Grüße
EarlFred

VBA-anfänger321
07.09.2011, 15:17
puhhh.....so weitreichend sind meine Kentnisse nicht....
gibts auch eine Lösung ohne VBA ?

also dass die gefilterten Ergebnisse gleich in ein extra Blatt übertragen werden ... das ganze soll standartisiert sein ... also auch für anderen Tabellen mit derselben Strucktur verwendet werden können...

Danke !!!!!

EarlFred
07.09.2011, 15:35
Hallo,

das Makro ist nun nicht der Hit:
Private Sub Worksheet_Activate()
Worksheets("Auswertung").Cells.ClearContents
With Worksheets("Tabelle1").UsedRange
.AutoFilter Field:=13, Criteria1:=">0", Operator:=xlAnd
.Copy Destination:=Worksheets("Auswertung").Cells(1, 1)
End With
End Sub

Die Blattnamen bitte noch anpassen: "Auswertung" ist das Blatt, in das die gefilterten Werte kopiert werden, "Tabelle1" ist das Blatt mit den Ausgangsdaten. Der Code gehört hinter die Tabelle "Auswertung" (Rechtsklick auf den Reiter|Code anzeigen)

Das dauert nichtmal eine Sekunde, um das auszuführen - bei Formeln musst Du etwas mehr Zeit einrechnen.

Grüße
EarlFred

P.S.: Hab's mal aus Spaß mit einer Formel probiert - hab die Berechnung nach 5 Minuten ohne Rückmeldung abgebrochen ;)

VBA-anfänger321
07.09.2011, 16:38
Hey Super, das ist schon mal echt sehr sehr gut !!!
Nur noch eine Sache.....hab dann noch ein paar "Filter-Aufgaben" die in einer extra Tebelle ausgegeben werden sollen.....

Private Sub Worksheet_Activate()
Worksheets("Auswertung").Cells.ClearContents
With Worksheets("Tabelle1").UsedRange
.AutoFilter Field:=13, Criteria1:=">0", Operator:=xlAnd
.Copy Destination:=Worksheets("Auswertung").Cells(1, 1)
End With
End Sub

--> wenn ich nur das Field:=13 auf z.b 17 ändere.....dann macht er mir nicht den Filder der Spalte Q !!!! Wie kann ich das hinbekommen ??

Vielen Dank

EarlFred
07.09.2011, 17:04
Hallo namenloser,

schrei doch nicht so!!!!!!!!!

wenn ich nur das Field:=13 auf z.b 17 ändere.....dann macht er mir nicht den Filder der Spalte Q
...sondern stattdessen macht er was?

Beginnt die "Ausgangstabelle" ggf. nicht in Spalte A? Dann klappt's mit Usedrange so nicht.

Grüße
EarlFred

VBA-anfänger321
07.09.2011, 20:48
Hallo namenloser,

schrei doch nicht so!!!!!!!!!


...sondern stattdessen macht er was?

Beginnt die "Ausgangstabelle" ggf. nicht in Spalte A? Dann klappt's mit Usedrange so nicht.

Grüße
EarlFred

erst mal danke für deine Hilfe ist echt super.....
Das Programm das du gepostet hast läuft super, wenn ich nur ein Kriterium (also z.B. wenn in Spalte M eine Zahl größer als 0 ist dann die Zeile ausgeben)
Wenn ich dann in einer weiteren Mappe ein weiteres Kriterium (unabhängig vom zuvor betrachtetem) herausfiltern will..... und die entsprechenden "Formelbeiträge" ändere, in:

Private Sub Worksheet_Activate()
Worksheets("Auswertung").Cells.ClearContents
With Worksheets("Tabelle1").UsedRange
.AutoFilter Field:=17, Criteria1:=">0", Operator:=xlAnd
.Copy Destination:=Worksheets("Auswertung").Cells(1, 1)
End With
End Sub

dann kommt eine eher unbrauchbare Tabelle raus.....!
Woran kann das liegen ???

Danke schon mal

VBA-anfänger321
07.09.2011, 20:56
[QUOTE=VBA-anfänger321;1401981]erst mal danke für deine Hilfe ist echt super.....
Das Programm das du gepostet hast läuft super, wenn ich nur ein Kriterium (also z.B. wenn in Spalte M eine Zahl größer als 0 ist dann die Zeile ausgeben)
Wenn ich dann in einer weiteren Mappe ein weiteres Kriterium (unabhängig vom zuvor betrachtetem) herausfiltern will..... und die entsprechenden "Formelbeiträge" ändere, in:

Private Sub Worksheet_Activate()
Worksheets("Auswertung").Cells.ClearContents
With Worksheets("Tabelle1").UsedRange
.AutoFilter Field:=17, Criteria1:=">0", Operator:=xlAnd
.Copy Destination:=Worksheets("Auswertung").Cells(1, 1)
End With





Sorry, hab den Fehler gefunden ... war nur eine Kleinigkeit bei der Bezeichnung !!! Vielen Vielen Dank für die Hilfe
End Sub