Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1172to1176
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 mit Schleife verknüpfen?

AutoFilter mit Schleife verknüpfen?
Juliane
Guten Morgen liebe Leute :)
habe ein Excel - VBA Problem, welches ich schon längere Zeit versuche zu lösen. Im Prinzip hab ich einen Lösungsweg gefunden der funktioniert, aber der ist wirklich nicht schön. Da sind mehrere Hundert Zeilen Coding nötig, und ich bin mir ziemlich sicher, das dies auch durch eine Schleife zu realisieren ist, nur leider sind meine Ansätze immer falsch.
Also ich erklär einfach, was ich bezwecken will bzw. muss:
Ich habe eine Tabelle mit circa 20 000 Datensätzen. Der Zeitraum beträgt von 01.08.2009 bis Heute(Datum muss immer aktualisiert werden). Nun soll ich Zählen wie viele Datensätze jeweils im August 2009, September 2009, ... , August 2010 vorhanden sind.
Wäre es nur ein Kriterium würde ich meine nicht schöne Lösung verwenden, aber da ich nach 14 verschiedenen Kriterien filtern muss, würde der Code ins unermessliche steigen, und total unübersichtlich werden.
Ich poste mal einen kleinen Ausschnitt aus meinem Coding vllt wird es dann ersichtlicher worauf ich hinaus möchte.
Private Sub cmdButton5_Click()
Dim datA As Long, datB As Long, l As Long
Dim rngUpperLeftCell As Range
Dim lngRowCount As Long
Dim rngArea As Range
' Button Monate
datA = CLng(DateValue("01.08.2009"))
datB = CLng(DateValue("31.08.2009"))
Selection.AutoFilter Field:=3, Criteria1:=">=" & datA, _
Operator:=xlAnd, _
Criteria2:=" Selection.AutoFilter Field:=13, Criteria1:="offen"
Selection.AutoFilter Field:=12, Criteria1:="="
Set rngUpperLeftCell = Worksheets("FiNAS TP_EQM").Range("A1")
For Each rngArea In rngUpperLeftCell.CurrentRegion.SpecialCells(xlVisible).Areas
lngRowCount = lngRowCount + rngArea.Rows.Count
Next
Range("AK12").Value = Format$(lngRowCount - 1, "#,##0")
ActiveSheet.ShowAllData
datA = CLng(DateValue("01.09.2009"))
datB = CLng(DateValue("30.09.2009"))
Selection.AutoFilter Field:=3, Criteria1:=">=" & datA, _
Operator:=xlAnd, Criteria2:=" Selection.AutoFilter Field:=13, Criteria1:="offen"
Selection.AutoFilter Field:=12, Criteria1:="="
lngRowCount = 0
Set rngUpperLeftCell = Worksheets("FiNAS TP_EQM").Range("A1")
For Each rngArea In rngUpperLeftCell.CurrentRegion.SpecialCells(xlVisible).Areas
lngRowCount = lngRowCount + rngArea.Rows.Count
Next
Range("AL12").Value = Format$(lngRowCount - 1, "#,##0")
ActiveSheet.ShowAllData
datA = CLng(DateValue("01.10.2009"))
datB = CLng(DateValue("31.10.2009"))
Selection.AutoFilter Field:=3, Criteria1:=">=" & datA, _
Operator:=xlAnd, Criteria2:=" Selection.AutoFilter Field:=13, Criteria1:="offen"
Selection.AutoFilter Field:=12, Criteria1:="="
lngRowCount = 0
Set rngUpperLeftCell = Worksheets("FiNAS TP_EQM").Range("A1")
For Each rngArea In rngUpperLeftCell.CurrentRegion.SpecialCells(xlVisible).Areas
lngRowCount = lngRowCount + rngArea.Rows.Count
Next
Range("AM12").Value = Format$(lngRowCount - 1, "#,##0")
ActiveSheet.ShowAllData
// das ganze geht jetzt weiter bis 31.08.2010 und das bei 14 weiteren Abfragen
Liebe Grüße
J

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: AutoFilter mit Schleife verknüpfen?
17.08.2010 10:18:58
Andi
Werden die Daten später kummuliert. Evtl. als S-Kurve dargestellt?
Wenn ja, mach es mit arrays!
Warum nicht Pivottabelle? oT
17.08.2010 10:19:03
JoWE
AW: Warum nicht Pivottabelle? oT
17.08.2010 10:33:23
Juliane
@ Andi: ne die Daten werden nicht als S-Kurve dargestellt ich brauch die Anzahl der Datensätze nur, um weitere Berechnungen durchzuführen.
@Jowe: Pivot Tabelle habe ich versucht, aber das bringt nur bei diesem ersten Kriterium etwas, danach muss ich nach allen offenen u z.B. nach Ursachenanalyse filtern. U da kam ich mit der Pivot nicht weiter....
AW: Warum nicht Pivottabelle? oT
17.08.2010 10:55:30
Andi
@ Andi: ne die Daten werden nicht als S-Kurve dargestellt ich brauch die Anzahl der Datensätze nur, um weitere Berechnungen durchzuführen.
Arrays Tabelle, Zeiten, Kriterien.
arrMeineTabelle = Range(Thisworbook.sheets(Index oder "Name").cells(Zeilenindex, Spaltenindex),Thisworbook.sheets(Index oder "Name").cells(Zeilenindex, Spaltenindex))
For i = 0 to Ubound (arrMeineTabelle())
For n = 0 to Ubound (arrMeineDatumWerte())
For k = 0 to Ubound (arrMeineKriterien())
'If oder Case Methoden Anzahl -- Ergebnisse(Anzahl von kriterium xy zur Zeit z) in ein Array schreiben
Next
Next
Next
arrErgebnis()
Okay?
Andi
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige