AW: Zahl hochzählen
12.09.2008 19:41:58
fcs
Hallo Rolf,
hier eine Makro-Lösung.
Idealerweise würde diese im Anschluss an die Aktualisierung der Daten in Spalte D automatisch gestartet.
Alternativ nach Bedarf von Hand oder auch automatisch vor dem Speichern oder vor dem Drucken/Seitenvorschau.
Vor Speichern/Drucken kann man mit den entsprechenden Ereignismakros realisieren.
Bei 3000 Zeilen ist das Makro schon etwas beschäfftigt.
Gruß
Franz
Sub ZaehlenWennSpalteN()
'Zeigt die Anzahl Wiederholungen der Werte in Spalte D in Spalte N _
für den letzten Eintrag an
Dim wks As Worksheet, Zeile As Long, lngZeileLast As Long
Dim BereichAlle As Range, BereichZeile As Range
Const lngSp As Long = 4 'Spalte für die Wiederholungen ermittelt werden sollen
Const lngSpZ As Long = 14 'Spalte in der Ergebnis ausgegeben werden soll
Const lngZ1 As Long = 2 '1. Zeile mit Daten
'Tabelle in der Auswertung gemacht werden soll
Set wks = Worksheets("Tabelle1")
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
With wks
'letzteZeile Spalte D
lngZeileLast = .Cells(.Rows.Count, lngSp).End(xlUp).Row
'Alle Daten Spalte D
Set BereichAlle = .Range(.Cells(lngZ1, lngSp), .Cells(lngZeileLast, lngSp))
'Werte in Ausgabespalte löschen
.Columns(lngSpZ).ClearContents
'SpaltenTitel in Ausgabespalte eintragen
.Cells(1, lngSpZ) = "Wiederholungen"
'Wiederholungen ermitteln und eintragen
For Zeile = lngZ1 To lngZeileLast
'Bereich bis zur aktuellen Zeile
Set BereichZeile = .Range(.Cells(lngZ1, lngSp), .Cells(Zeile, lngSp))
With Application.WorksheetFunction
If .CountIf(BereichAlle, wks.Cells(Zeile, lngSp)) = _
.CountIf(BereichZeile, wks.Cells(Zeile, lngSp)) Then
wks.Cells(Zeile, lngSpZ) = .CountIf(BereichAlle, wks.Cells(Zeile, lngSp))
End If
End With
Next
End With
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
MsgBox "Berechnung Spalte N ist fertig"
End Sub