Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
184to188
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
184to188
184to188
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

sichtbaren Bereich durchsuchen bei Autofilter

sichtbaren Bereich durchsuchen bei Autofilter
28.11.2002 17:05:19
ChristianG
Hallo Leute,

ich probiere schon einiger Zeit an einem Makro rum, daß mir aus einer Tabelle Daten aus einem bestimmten Zeitraum filtert. Diese Daten will ich dann bearbeiten.
Ich habe nun Probleme nur den sichtbaren Bereich zu durchsuchen und komme nicht weiter.

In der Recherche habe ich das hier gefunden:
Set rng = Range("A3").CurrentRegion.SpecialCells
Habe allerdings keine Ahnung, was diese Zeile genau bewirkt.
Es soll "rng" den sichtbaren Bereich von A3 bis zum Ende der Tabelle zuweisen....hoffe ich.

Zum testen, was "rng" dann eigentlich ist habe ich jetzt folgendes Makro geschrieben....Ergebnis: läßt sich nicht beenden, der Bereich scheint auch nicht richtig zu sein und ich muß Excel mit dem Taskmanager beenden :-(

Kennt jemand eine Möglichkeit nur die sichtbaren Zellen auszuwählen?

Sind die Auswahlmöglichkeiten in der Dropdownliste beim AutoFilter auch Objekte? (Das würde die komische Anzeige bei "MsgBox C.Value" erklären.)

Wäre schön wenn mir jemand helfen kann.

Gruß
Christian

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: sichtbaren Bereich durchsuchen bei Autofilter
28.11.2002 18:05:50
M. Kuhn
Moin Christian,

das hier:

Dim x As Long

x = Range("B1").AutoFilter(Field:=1, Criteria1:=">=16-Jun-2002", Operator:=xlAnd, Criteria2:="<=19-Jun-2002")
Range("B1", Range("B1").End(xlDown)).Select


findet, filtert und markiert alle den Kriterien entsprechenden Werte. Bereich anpassen. Wenn noch Fragen: posten oder mailen.

Mfg Mario

Re: sichtbaren Bereich durchsuchen bei Autofilter
28.11.2002 20:40:42
ChristianG
Hi Mario,

erstmal vielen Dank für Deine Hilfe.

Ich habe noch ein bischen rumgebastelt und hab jetzt das hier hinbekommen:

Leider habe ich es nicht ohne den Umweg über eine andere Arbeitsmappe hinbekommen.

Gibt es keine Möglichkeit
Dim Cell As Range
...
For Each Cell In Selection
'Anweisung
Next
so hinzubekommen, dass nur die sichtbaren Zellen angesprochen werden?

Andere Frage:
Wofür ist das "x =" bei x = Range("G2").AutoFilter...... ?
Nach dem Filtern hat es den Wert -1. Was bedeutet das?

Ansonsten läufts jetzt. Vielen Dank.

Gruß
Christian

Anzeige
Re: sichtbaren Bereich durchsuchen bei Autofilter
28.11.2002 22:58:41
M. Kuhn
Moin Christian,

wenn ich nur wüsste, was Du eigentlich machen willst. Also:

Diese Zeile:

Range("G2", Range("G2").End(xlDown)).Copy

kopiert alle ausgefilterten (sichtbaren & gefüllten) Zellen in die Zwischenablage.
Mit Deinem ff. Text landen diese in der ersten Tabelle einer neuen Mappe. Umweg?? Ja, wo sollen sie denn hin? Sags, und ich versuche Dir zu helfen.

Das x ist eine Variable, die den Rückgabewert der *AutoFilter*-Funktion (Methode) enthält, einzelne Rückgabewerte siehe dort (Hilfe).

Schreib also mal, was Du mit den Ergebnissen des AFilters eigentlich machen willst. Du kannst die Mappe auch mailen.

MfG Mario


Anzeige
Re: sichtbaren Bereich durchsuchen bei Autofilter
29.11.2002 10:08:23
ChristianG
Guten Morgen Mario,

also, der eigentliche Sinn der Sache:

Ich habe eine recht große Tabelle die ich wöchentlich auswerten möchte. Das entsprechende Datum steht in Spalte P.
Aus den Zeilen mit einem Datum aus der aktuellen Woche sollen dann einige Zellen (D,E,F,H und E) - sortiert/aufgeteilt nach verschiedenen anderen Kriterien in Spalten B,D,F und G - in eine neue Tabelle übertragen werden.

Da ich dafür wohl die Tabelle mehrmals durchlaufen muß kann das sehr lange dauern wenn ich mehr als nur die aktuelle Woche durchsuche. ...darum der AutoFilter.

Da ich es mit einer For...Each...In...Next Schleife nicht hinbekomme, daß nur die sichtbaren Zellen durchsucht werden kopiere ich jetzt die Daten zuerst in eine neue Arbeitsmappe (oder Blatt) und dann von dort in die endgültige Arbeitsmappe.

Range("P2", Range("P2").End(xlDown)).Copy kann ich nicht verwenden, da hier nur der Bereich A1 bis P... kopiert wird.
Range("AT2", Range("AT2").End(xlDown)).Copy geht nicht, weil in Spalte AT manchmal leere Zellen auftauchen und dann nicht alle Zeilen kopiert werden.
Darum kopieren ich jetzt mit Cells.Copy alle sichtbaren Zellen.

Also kurz gesagt, ich möchte nur so wenig Zeilen wie möglich durchsuchen um das ganze in einer halbwegs erträglichen Zeit durchlaufen zu lassen. Bin ich da mit AutoFilter auf dem falschen Weg?

Muß ich mit dem Umweg über eine andere Mappe oder Blatt leben? Wär auch nicht so schlimm. Ist immer noch wesentlich schneller als 50000 Zeilen 6 bis 7mal zu durchlaufen.

Also nochmal Danke für Deine Hilfe.

MfG
Christian

Anzeige
Re: sichtbaren Bereich durchsuchen bei Autofilter
29.11.2002 18:59:07
M. Kuhn
Moin Christian,

jetzt sehe ich hoff. klarer:

Du willst in einer Tabelle, abhängig vom Datum(-swert) in Spalte P mehrere Spalten in neue Tabelle(n) kopieren?

Wenn dem so ist, dann biete ich meinen 2-Zeiler nochmals an:

Der Autofilter blendet alle Zeilen aus, in dem das Datum (Spalte B) nicht zutrifft. Sichtbar (!) sind dann folglich in allen Spalten nur noch die interessanten Werte, alle in der gleichen Reihenfolge.
Diese Bereiche kopierst Du mit der 2. Zeile (Bereichskennung anpassen) in ein neues Blatt.
Sollten Dich jedoch auch aus diesen Spalten wiederum nur bestimmte Werte interessieren, musst Du den Autofilter erneut anwenden, der dann wiederum alle Zeilen unsichtbar macht (ausblendet), die nicht zutreffen. usw. usf.

Das eigentliche 'Suchen' erledigt der Autofilter über je 65536 Zeilen in Sekundenbruchteilen. Solltest Du in einer markierten Spalte einen Einzelwert suchen, geht auch die Find()-Fkt., schneller als Autofilter ist es auch nicht.

Also Prinzip:
Zeile1: Autofilter auf Spalte P anwenden
Zeile 2: dto. auf Spalte B anwenden (neue Kriterien)
Zeile 3: Spalte E kopieren Range("E1", Range("E1").End(xlDown))
Zeile 4: Autofilter aus 2. evtl. rückgängig machen, damit wieder Daten wie nach 1. sichtbar
Zeile 5: wie 2. (neue Kriterien)
Zeile 6: wie 3 (neuer Bereich)
Zeile 7: wie 4.

Halte mich auf dem Laufenden - MfG Mario


Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige