| VBA-Beispiel 120 | |
|
|
|
gefilterte Daten einer Exceltabelle berechnen |
|
|
Mit einer UserForm sollen die Daten nach Region gefiltert werden. Nur für die gefilterten Daten sollen dann jeweils Minimum, Maximum und Durchschnitt berechnet werden. |
|
Dim bolFilter As Boolean Private Sub UserForm_Initialize() Dim lngZeile As Long, lngLZ As Long Dim col As New Collection 'Filtermodus merken bolFilter = ActiveSheet.AutoFilterMode 'letzte Zelle in Spalte A mit Inhalt lngLZ = Cells(Rows.Count, 1).End(xlUp).Row On Error Resume Next 'Einträge aus Spalte A ohne Doppelte ermitteln For lngZeile = 2 To lngLZ col.Add Cells(lngZeile, 1), Cells(lngZeile, 1) Next lngZeile On Error GoTo 0 'Einträge aus Spalte A ohne Doppelte 'in Listbox eintragen For lngZeile = 1 To col.Count Me.ListBox1.AddItem col(lngZeile) Next lngZeile With Me .lblMin.Caption = "" .lblMax.Caption = "" .lblDurchschnitt.Caption = "" End With End Sub Private Sub ListBox1_Click() 'Spalte A filtern Range("A1").AutoFilter Field:=1, Criteria1:=Me.ListBox1 'Werte nur der SICHTBAREN Zellen Spalte B ermitteln With Me .lblMin.Caption = "Min: " & _ WorksheetFunction.Min(Columns("B:B").SpecialCells(xlCellTypeVisible)) .lblMax.Caption = "Max: " & _ WorksheetFunction.Max(Columns("B:B").SpecialCells(xlCellTypeVisible)) .lblDurchschnitt.Caption = "Duchschnitt: " & _ WorksheetFunction.Average(Columns("B:B").SpecialCells(xlCellTypeVisible)) End With End Sub Private Sub cmbCancel_Click() Range("A1").AutoFilter Field:=1 If bolFilter = False Then ActiveSheet.AutoFilterMode = bolFilter End If Unload Me End Sub |
|
|
Download: vba120.zip |
|
|
relevante Links: |
|
| |