AW: VBA Hilfe- max. Wert bei gleichen Vergleichswerten
05.09.2009 02:46:12
fcs
Hallo Peter,
Hauptproblem in deiner Datei: In Spalte K steht das Datum als Text.
Dadurch haben Formeln Probleme den Zellinhalt auszuwerten bzw. in die Formeln müssen Funktionen zur Umwandlung von Text zu Datum/Zeit eingebaut werden.
Das Makro sollte also erst den Inhalt dieser Spalte in Excel-Zeit umwandeln. Dann kann man in Spalte A eine Matrix-Formel zur Berechnung einfügen und die Ergebnisse dann wieder durch Werte ersetzen.
Gruß
Franz
Sub MaxDatumGruppe1()
Dim LetzteZeile As Long, Zelle As Range
LetzteZeile = Cells(Rows.Count, 3).End(xlUp).Row
'Format in Spalten A und K setzen
Columns(1).NumberFormat = "DD.MM.YYYY hh:mm:ss"
Columns(11).NumberFormat = "DD.MM.YYYY hh:mm:ss"
'Text in Spalte K in Datum umwandeln
For Each Zelle In Range(Cells(2, 11), Cells(LetzteZeile, 11))
If Zelle = "" Then
Zelle.ClearContents
Else
Zelle.Value = DateValue(Zelle.Text) + TimeValue(Zelle.Text)
End If
Next
'Berechnungsformel in Spalte A2 eintragen und Formel durch Werte ersetzen
Cells(2, 1).FormulaArray = _
"=IF(ISBLANK(RC[2]),"""",IF(RC[10]=MAX(IF((RC[2]=R2C3:R" & LetzteZeile _
& "C3),R2C11:R" & LetzteZeile & "C11,0)),RC[10],""""))"
With Range(Cells(2, 1), Cells(LetzteZeile, 1))
'Formel kopieren
.FillDown
'Exit Sub 'Zeile von Bemerkung in Code wandeln, wenn die Formeln stehen bleiben sollen
'Formeln durch werte ersetzen
.Value = .Value
End With
'Leerstrings in Zellen löschen
For Each Zelle In Range(Cells(2, 1), Cells(LetzteZeile, 1))
If Zelle = "" Then Zelle.ClearContents
Next
End Sub