Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1296to1300
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

Autofilter

Autofilter
04.02.2013 12:26:42
Kati
Hallo zusammen,
ich komme nicht weiter - ich habe eine Excel-Tabelle, wo in Spalte A Vertragsnummern stehen - spaltenüberschrift ist auch "Vertragskonto" - hier sollen alle Vertragsnummern nacheinander gefiltert werden.
Also erst VK 1000 - dann VK 1001 - dann VK 1002 etc. (ca.10000) - Ich muss dazu sagen, dass ein vertragskonto mehrfach auftauchen kann. (Sortiert sind diese)
Hier mein Code dazu:
Sub Filtern()
Cells.Select
Selection.AutoFilter
' ActiveSheet.Range("$A$1:$AO$37207").AutoFilter Field:=1, Criteria1:=Vertragskonto
m = 0
Do Until ActiveCell.Value = ""
Vertragskonto = ActiveCell.Value
ActiveSheet.Range("$A$1:$AO$37207").AutoFilter Field:=1, Criteria1:=Vertragskonto
'MsgBox Format(WorksheetFunction.Min(Range("G1:G65000")), "dd.mm.yy")
'MsgBox Format(WorksheetFunction.Max(Range("H1:H65000")), "dd.mm.yy")
Workbooks("P9A_401_2010 - Gesamt.xlsx").Activate
ActiveSheet.Range("$A$1:$AO$37207").AutoFilter Field:=1, Criteria1:=Vertragskonto
Range("A1").Select
m = m + 1
ActiveCell.Offset(m, 0).Select
Loop
End Sub
Er bleibt immer im der 2. Zeile... Weiß nur grade nicht warum! Vielleicht könnt ihr mir ja helfen!

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Autofilter
04.02.2013 12:45:14
Klaus
Hallo Kati,
dein Code ist etwas quer ... selects in den gefilterten Bereich, (unnötige) activates ...
Davon abgesehen, vielleicht filtert er dir ja auch alle Konten korrekt? Da du zwischen den Filterungen nichts machst, siehst du das vielleicht gar nicht ...
Ich würd da jetzt ganz anders rangehen: (alles folgende Makrorekordern)
Kopier dir alle Vertragsnummern in ein leeres Blatt, und lasse dort den Spezialfilter ohne Duplikate laufen.
In deiner Mastertabelle filterst du jetzt für jeden Eintrag in deiner neuen Liste einmal, und verzichtest dabei auf die SELECT und activate.
Grüße,
Klaus M.vdT.

Anzeige
AW: Autofilter
04.02.2013 20:59:52
Kati
Das Problem ist, dass er nicht in den Filter wechselt und ein Vertragskonto weiter geht, sondern er filtert auf das erste Kriterium und geht dann immer eine Zeile weiter runter...
Und ich weiß einfahc nicht weiter! :(

AW: Autofilter
05.02.2013 08:02:47
Klaus
Hallo Kati,
Und ich weiß einfahc nicht weiter! :(
schon probiert, was ich geschrieben habe? Mehr Hilfe gibt es nicht ohne Musterdatei ...
Grüße,
Klaus M.vdT.

AW: Autofilter
05.02.2013 09:10:09
Kati
Also ich habe jetzt die Vertragsnummern ohne Duplikate in einen neue Tabelle eingefügt.
Hier zur Musterdatei:

Die Datei https://www.herber.de/bbs/user/83759.xlsm wurde aus Datenschutzgründen gelöscht


Sollen diese als SVERWEIS über VBA gesucht und ausgewählt werden?

Anzeige
AW: Autofilter
05.02.2013 09:57:06
Klaus
Hallo Kati,
ich hab deinen Code nicht optimiert, sondern das ganze neu geschrieben ....
bitte lass den Script mal laufen. Ist es das was du möchtest?
Sub JedesKontoEinmal()
Dim lRow As Long
Dim lAnz As Long
Dim sFilter As String
'Autofilter zurücksetzen
Call DoResetAutofilter(Sheets("2010"), 1, 5, 1)
'Mache einzigartige Vertragsnummern in extra Tabelle
With Sheets("Tabelle1")
.Cells.ClearContents
Sheets("2010").Columns("A:A").Copy
.Range("A1").PasteSpecial xlPasteValues
.Columns("A:A").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=.Range("B1"), Unique:= _
True
Application.CutCopyMode = False
lRow = .Cells(.Rows.Count, 2).End(xlUp).Row
End With
'Autofilter ausführen - einmal für jedes Konto
For lAnz = 2 To lRow
sFilter = Sheets("Tabelle1").Cells(lAnz, 2).Value
Sheets("2010").Range("$A$1").AutoFilter Field:=1, Criteria1:=sFilter
'****** DIESE ZEILE AUSKOMMENTIEREN ****
MsgBox ("Konto " & sFilter & " wird angezeigt")
'******* stattdessen: wasimmer du mit dem gefilterten Werten anfangen willst .... ***
Next lAnz
End Sub
Sub DoResetAutofilter(wksMySheet As Worksheet, iColFirst As Integer, iColLast As Integer,  _
lRowFirst As Long)
'* in case a user used another autofiler, this makro resets the autofilter to where needed.
Dim lRowLast As Long
With wksMySheet
lRowLast = .Cells(.Rows.Count, iColFirst).End(xlUp).Row
If .AutoFilterMode Then .Cells.AutoFilter 'Turns OFF Autofilter, if any
.Range(.Cells(lRowFirst, iColFirst), .Cells(lRowLast, iColLast)).AutoFilter 'Turns ON  _
Autofilter on given range
End With
End Sub
Grüße,
Klaus M.vdT.

Anzeige
AW: Autofilter
05.02.2013 10:10:30
Kati
Ja super - genau das ist es... Wofür benötige ich:
DoResetAutofilter(Sheets("2010"), 1, 5, 1) ?
Ich muss später noch das jüngste Datum sowie das älteste Datum für jedes Vertragskonto suchen. Dies benötige ich um in anderen tabellen nach älteren und jüngeren Werten zu suchen. Also z.B. VK 1001, Gültig ab 01.01.2010 bis 31.05.2010 - nun soll er in 2 anderen Dateien das VK und ein "B" bei R3echnungsart suchen und dieses dann in einer neuen Tabelle einfügen...

AW: Autofilter
05.02.2013 10:32:47
Klaus
Hallo Kati,
das DoResetAutofilter(Sheets("2010"), 1, 5, 1) benötigst du ... eigentlich gar nicht.
Schau mal unter das eigentliche Makro, da ist noch eine
Sub DoResetAutofilter, welche oben aufgerufen wird. Damit stelle ich sicher, dass vor Ablauf des Makros der Autofilter 1) momentan nicht filtert und 2) auf genau den richtigen Bereich gesetzt ist.
Wäre das nicht drin, und du filterst die Liste und führst das Makro aus, dann geht der Vorgang des kopieren der Vertragsnummern schief (weil nicht die ganze, sondern die gefilterte Liste kopiert wird). Ich habe mir angewöhnt, bei Makros mit Filtereinsatz den Filter zu Beginn neu zu setzen um diesen Fehler auszuschließen. Kannst du 100% garantieren, dass das Makro NIE bei gefilterter Liste gestartet wird und der Autofilter auch NIE aufgehoben oder - noch schlimmer - an eine andere Stelle verschoben wird, brauchst du die Zeile nicht. Schadet aber andererseits auch nicht :-)
Da ich diesen Vorgang (Autofilter neu setzen) öfters benutze, habe ich dazu eine Standardprozedur die ich aus Faulheit einfach kopiere.
Ich muss später noch das jüngste Datum sowie das älteste Datum für jedes Vertragskonto suchen.
Dazu braucht es aber keinen Autofilter!
https://www.herber.de/bbs/user/83762.xlsm
Hier, in der "Tabelle1" mit den einzigartigen Vertragsnummern mal fix mit Matrixformeln. Ganz ohne VBA.
Grüße,
Klaus M.vdT.

Anzeige
AW: Autofilter
05.02.2013 11:03:19
Kati
Ich hätte gerne alles in einem Lauf - da er 4 Werte (VK, Gültig etc.) prüfen muss und diese mit den Werten in anderen tabellen vergleicht und dann in einer neuen tabelle wiedergibt... es sind einfach zu viele Daten um diese zwischendurch selber noch mit Formeln zu belegen.

AW: Autofilter
05.02.2013 11:10:01
Klaus
Hi Kati,
aus deinem letzten Beitrag lese ich keine Fragestellung.
Bitte geh mal gedanklich ganz weg von der Autofilterung und beschreibe einfach nur, was du möchtest.
Ich habe jetzt Verstanden:
Du brauchst pro Vorgangsnummer zwei Datümer.
Welche genau (Beispielhafte Zellenangabe in der Musterdatei!) und wo genau sollen die stehen?
Grüße,
Klaus M.vdT.

Anzeige
AW: Autofilter
05.02.2013 13:26:11
Kati
Die Dateien sind leider zu groß - kann ich die irgendwie anders schicken?

AW: Autofilter
05.02.2013 13:28:15
Klaus
Hallo Kati,
du hast leider meine Fragen nicht beantwortet. Eine Musterdatei von dir habe ich doch schon, deine Master-Dateien brauche ich nicht.
Grüße,
Klaus M.vdT.

AW: Autofilter
05.02.2013 13:43:00
Kati
Also:
Hauptdatei:
https://www.herber.de/bbs/user/83771.xlsx
Daten aus 10_11_zu_12:
https://www.herber.de/bbs/user/83772.xlsx
Daten aus 10_zu_11:
https://www.herber.de/bbs/user/83773.xlsx
Also:
Zu prüfen ist, ob Daten/Werte pro Vertragskonto in anderen Dateien vorhanden sind, die jünger und/oder älter als die Gültigkeitswerte sind. Hierbei muss das Vertragskonto sowie Statistikgr. Betrag mit den Werten der anderen Dateien übereinstimmen.
„Gültig ab“ muss also minus 1 und „Gültig bis“ plus 1 gerechnet werden. Also wenn der Zeitraum 01.10.2010 bis 31.10.2010 – dann soll er alles was älter ist als 01.10.2010 (30.09.2010, 29.09.2010…) und alles was jünger ist als 31.10.2010 (1.11.2010, 1.12.2010…) in den Dateien „Daten aus 10_11_zu_12“ und „Daten aus 10_zu_11“ suchen.
Wenn dies so ist, soll aus der Datei „Daten aus 10_11_zu_12“ UND/ODER „Daten aus 10_zu_11“ die komplette Zeile kopiert werden und in eine neue Tabelle übertragen werden.
Daher meine Überlegung, ob man vorher die Vertragsnummern automatisch filtert und in dem Lauf die Werte der Datei 2010 prüft und mit den anderen Dateien vergleicht und kopiert.
So und jetzt meine Frage – wie funktioniert das?
Den Prozess muss ich nun auch noch mit einer Datei für 2011 und 2012 übernehmen.

Anzeige
AW: Autofilter
05.02.2013 13:33:46
Kati
Also:
Hauptdatei:
https://www.herber.de/bbs/user/83771.xlsx
Daten aus 10_11_zu_12:
https://www.herber.de/bbs/user/83772.xlsx
Daten aus 10_zu_11:
https://www.herber.de/bbs/user/83773.xlsx
Also:
Zu prüfen ist, ob Daten/Werte pro Vertragskonto in anderen Dateien vorhanden sind, die jünger und/oder älter als die Gültigkeitswerte sind. Hierbei muss das Vertragskonto sowie Statistikgr. Betrag mit den Werten der anderen Dateien übereinstimmen.
„Gültig ab“ muss also minus 1 und „Gültig bis“ plus 1 gerechnet werden. Also wenn der Zeitraum 01.10.2010 bis 31.10.2010 – dann soll er alles was älter ist als 01.10.2010 (30.09.2010, 29.09.2010…) und alles was jünger ist als 31.10.2010 (1.11.2010, 1.12.2010…) in den Dateien „Daten aus 10_11_zu_12“ und „Daten aus 10_zu_11“ suchen.
Wenn dies so ist, soll aus der Datei „Daten aus 10_11_zu_12“ UND/ODER „Daten aus 10_zu_11“ die komplette Zeile kopiert werden und in eine neue Tabelle übertragen werden.
Daher meine Überlegung, ob man vorher die Vertragsnummern automatisch filtert und in dem Lauf die Werte der Datei 2010 prüft und mit den anderen Dateien vergleicht und kopiert.
So und jetzt meine Frage – wie funktioniert das?
Den Prozess muss ich nun auch noch mit einer Datei für 2011 und 2012 übernehmen.

Anzeige
sorry, ist mir zu hoch
05.02.2013 13:45:52
Klaus
Hallo Kati,
sorry, ich baue jetzt nicht mal eben ein Dateiübergreifend-Abgleich-Kopier Programm zusammen. Ich möchte dir raten, zu diesem Problem einen neuen Beitrag zu eröffnen damit andere sich damit Paradigmenfrei auseinandersetzen können.
Von mir hast du den Lösungsansatz mit dem Autofilter, und mit den Matrixformeln. Was ich dir anbieten kann ist ein Makro, dass in der Datei die Vertragsnummern auflistet und jeweils die MIN/MAX Datümer daneben schreibt.
Grüße,
Klaus M.vdT.

AW: sorry, ist mir zu hoch
06.02.2013 22:34:28
Kati
Trotzdem vielen Dank für deine Hilfe!

Danke für die Rückmeldung! owT.
07.02.2013 14:00:51
Klaus
.

AW: Autofilter
04.02.2013 13:36:02
Dieter(Drummer)
Hi Kati,
ich bin nicht sicher, ob es damit zu tun hat, dass in Excel 2010 der max. Filter bei 10.000 Zeilen liegt.
Ansonsten kann ich keien weitere Hilfe anbieten.
Die wichtigsten Änderungen
Ohne auf die einzelnen Änderungen detailliert einzugehen, hier eine kleine Liste der wichtigsten Neuerungen:
Maximale Anzahl ... Excel 2007/2010
Spalten 16'384
Zeilen 1'048'576 65'536
Sortierschlüssel 64
Farben 4'294'967'296
Zellformate 65'536
Verschachtelungen in Funktionen 64
Zeichen in Formeln 8'192
Bedingungen von bedingten Formatierungen Unbeschränkt
Argumente von Funktionen 255
Elemente von AutoFilter-Auswahllisten 10'000
Gruß, Dieter(Drummer
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige