AW: Makro Ergänzung - wahrscheinlich einfach
24.02.2007 21:03:00
fcs
Hallo Andreas,
Passe das Makro wie folgt an.
Gruss
Franz
Sub Summenberechnung()
Dim wks As Worksheet
Dim Zeile1 As Long, Zeile2 As Long, Produkte As Range, Monat As Range
Dim SpalteL As Integer, ZeileL as Long
Set wks = ActiveWorkbook.Worksheets("KA Plange")
With wks
Zeile1 = 13
'Letzte Datenzeile in Spalte A
Zeile2 = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
'Letzte DatenSpalte in Zeile 12
SpalteL = .Cells(12, .Columns.Count).End(xlToLeft).Column
'Letzte DatenZeile in Spalte C
ZeileL = .Cells(.Rows.Count, 3).End(xlUp).Row
'Zellinhalte im Ausgabebereich löschen
.Range(.Cells(Zeile2 + 3, 3), .Cells(IIf(ZeileL > Zeile2 + 3, ZeileL, Zeile2 + 3), SpalteL)).ClearContents
'Produktliste erstellen, Spalte C wird durchsucht und Produkte ohne doppelte unterhalb der Liste eingetragen
For Zeile = Zeile1 To Zeile2 Step 3
ZeileP = Zeile2 + 3 'Ergebnisse werden 3 Zeilen unterhalb der letzten Datenzeile eingetragen
Do
If IsEmpty(.Cells(ZeileP, 3)) Then
.Cells(ZeileP, 3).Value = .Cells(Zeile, 3).Value
Exit Do
Else
If .Cells(ZeileP, 3).Value = .Cells(Zeile, 3).Value Then Exit Do
End If
ZeileP = ZeileP + 1
Loop
Next
'Produktliste sortieren
.Range(.Cells(Zeile2 + 3, 3), .Cells(.Rows.Count, 3).End(xlUp)).Sort _
Key1:=.Cells(Zeile2 + 3, 3), Order1:=xlAscending, Header:=xlNo
'Ergebnisse für verbindliche Kontrakte berechnen
Set Produkte = .Range(.Cells(Zeile1, 3), .Cells(Zeile2, 3))
For Spalte = 5 To .Cells(Zeile2, .Columns.Count).End(xlToLeft).Column
If IsDate(.Cells(12, Spalte)) Then 'Spalte D-Preis 1-12 wird nicht ausgefüllt
Set Monat = .Range(.Cells(Zeile1, Spalte), .Cells(Zeile2, Spalte))
For Zeile = Zeile2 + 3 To .Cells(.Rows.Count, 3).End(xlUp).Row
.Cells(Zeile, Spalte).Value = SummeVerbindlich(.Cells(Zeile, 3), Produkte, Monat)
Next
End If
Next
End With
End Sub