Herbers Excel-Forum - das Archiv

Teilergebnisse einer Tabelle mit VBA kopieren

Bild

Betrifft: Teilergebnisse einer Tabelle mit VBA kopieren
von: Norbert
Geschrieben am: 13.12.2003 20:50:21
Hallo liebe Forumleute!

Kann mir bitte jemand weiterhelfen??!!
Es geht um folgendes:

Nepomuk vom Forum hat mir bereits viel geholfen. Aber in seinem Skript funktioniert eine Anweisung nicht so wie ich mir das vorgestellt habe.

In einem VBA-Skipt sortiere und berechne (Daten/Teilergebnisse/Unter Verwendung von Summe) ich Werte in einem Tabellenblatt, in dem sich viele Daten befinden und immer wieder Daten hinzukommen. Dann verwende ich noch den Autofilter (in Zeile 1) zum Filtern.
Dann lasse ich einen „Zeilenzähler“ laufen, der die Zeilen bis zur ersten Leerzeile in Spalte F zählt.
Danach lasse ich eine Schleife (von 2 bis „Zeilenzähler“) laufen, in der ich in der Spalte I und M nach gewissen Einträgen suche.
Das funktioniert so recht gut, aber Excel-VBA zählt nach dem Erstellen der Teilergebnisse und nach der Autofilterung ALLE Zeilen durch; so bekomme ich einen wertmäßig sehr großen „Zeilenzähler“, obwohl am Tabellenblatt vielleicht durch den Autofilter nur mehr wenige Zeilen überbleiben.
Das Problem ist nun klar: Wenn ich also mal eine Zeilenzahl von z.B. 2000 habe und dann Autofiltere, und danach nur mehr vielleicht 60 Zeilen sichtbar sind, weil genau diese mich interessieren, werden trotzdem 2000 Zeilen gezählt und die for-Schleife wird 2000 mal durchlaufen! Das dauert dann immer länger.
ACHTUNG: Wie bereits oben erwähnt erstelle ich nach der Autofilterung auch noch TEILERGEBNISSE (Daten/Teilergebnisse/Unter Verwendung von Summe)!!
Mit Nepomuks Skript erspare ich mir die Schleife zum Zeilenzählen und ich sollte den TEILERGEBNIS-GEFILTERTEN Bereich in ein neues Arbeitsblatt kopieren können, der nach der Filterung UND DER TEILERGEBINS-Erstellung übrig bleibt. Die Teilergebnis-Funktion in Excel liefert mir aber in Spalte F gewisse Teilergebnisse:
Z.B. steht dort: AB Ergebnis, weil AB eine Filtermöglichkeit ist; x-Zeilen darunter
CD Ergebnis, weil CD auch eine weitere Filtermöglichkeit ist usw.
Genau so will ich das auch, aber mit der Kopieranweisung in Nepomuks Skript werden nur die Zeilen bis zum ersten Teilergebnis (z.B. AB Ergebnis) markiert (selektiert).
Wie kann ich nun ALLE sichtbaren Zeilen (eben nach der Teilergebnis-Erstellung und Filterung) MIT DEN TEILERGEBNIS-Texten (wie z.B. AB Ergebnis) selektieren?

Mein Taberllenblatt nach der Filterung und der Erstellung der Teilergebnisse sieht z.B. so aus:

https://www.herber.de/bbs/user/2449.xls

Ich bitte auch um genaue (verständliche) Skriptangabe, weil ich mich in VBA noch nicht gut auskenne. Die Skriptteile unten sind großteils auch von Forumteilnehmern, die mir sehr weitergeholfen haben.

Nepomuks Skript:

Public



Sub test()
Dim varArray As Variant
Application.ScreenUpdating = False
Range("A1").Select
Range(Range("A2:C2"), Selection.End(xlDown)).Copy  ---   Hier werden “zuwenig” Zeilen selektiert!!
Workbooks.Add
Range("A1").PasteSpecial xlPasteAll
varArray = ActiveSheet.UsedRange
ActiveWorkbook.Close False
Application.ScreenUpdating = True
End Sub



Danke im Voraus

LG
Norbert
Bild

Betrifft: AW: Teilergebnisse einer Tabelle mit VBA kopieren
von: Nepumuk
Geschrieben am: 13.12.2003 21:11:32
Hallo Norbert,

ändere die Zeile:

Range(Range("A2:C2"), Selection.End(xlDown)).Copy

so:

Range(Range("A2:I65536"), Selection.End(xlUp)).Copy

Gruß
Nepumuk
P.S. Schreibt sich wirklich so.
Bild

Betrifft: Super!!
von: Norbert
Geschrieben am: 15.12.2003 13:37:37
Hi Nepomuk!

Ich danke dir wirklich sehr. Der Tipp war sehr gut und nach kleinen Anpassungen in meinem Skript läuft alles super!!
Das war eine einfache und zugleich geniale Idee von dir mit dem "temporären" Kopieren der teilergebnisgefilterten Daten in ein neues Workbook.
Ich kopiere alle Daten in eine neue Mappe, suche dort die für mich relevanten Werte mit einer for-Schleife aus und kopiere diese in mein File.
Die temporär erstellte Mappe schließe ich wieder ohne zu speichern.

Ich danke dir nochmals

LG
Norbert
Bild
Excel-Beispiele zum Thema " Teilergebnisse einer Tabelle mit VBA kopieren"
Teilergebnisse in Zahlenreihe eintragen und löschen Teilergebnisse einer Serie von Tabellen in anderes Blatt kopieren
Zellen in Abhängigkeit des Summen-Teilergebnisses markieren Suche über mehrere Tabellen
Benennen von Tabellenblättern mit Monatsnamen Druckseitenlinien im Tabellenblatt
Tabellenblattnamen in ein Listenfeld einlesen Suchbegriff über mehrere Tabellenblätter suchen.
Tabellenblätter benennen Tabellenblatt auswählen