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