AW: Einfügen Formel & Berechnung
19.05.2008 12:49:42
fcs
Hallo Björn,
hier 2 Vorschläge zur VBA-Lösung
Nummer 1 trägt die Auswertungsergebnis in die Tabelle ein.
Nummer 2 fügt die Berechnungsformeln ein.
Bei den Formeln hab ich fürd kumulierte Ergebnis eine Summenformel verwendet.
Damit die Formeln gut funktionieren (kopierfähig sind) müssen einige Bezüge in den Formeln absolut gesetzt werden.
Formel in D2: =C2/$C$21 * 100
Formel in E2: =SUMME($D$2:D2)
Formel in C21: =SUMME($C$2:C20)
Gruß
Franz
Sub Auswertung()
'Trägt die Auswertungsergebnisse im Blatt ein
Dim lngZeile As Long, dblSumme As Double, objWks As Worksheet
Const lngSpWert As Long = 3 'Spalte C
Const lngSpErg As Long = 4 'Spalte D
Const lngSpKum As Long = 5 'Spalte E
Const lngZeile1 As Long = 2 '1. Zeile mit Wert
Set objWks = ActiveSheet
With objWks
If .Cells(.Rows.Count, lngSpWert).End(xlUp).Row >= lngZeile1 Then
'Summe berechnen
dblSumme = Application.WorksheetFunction.Sum(.Range(.Cells(lngZeile1, lngSpWert), _
.Cells(.Rows.Count, lngSpWert).End(xlUp)))
'Ergebnis- und kumulierte Spalte berechnen und ausfüllen
For lngZeile = lngZeile1 To .Cells(.Rows.Count, lngSpWert).End(xlUp).Row
'Ergebnis
.Cells(lngZeile, lngSpErg).Value = .Cells(lngZeile, lngSpWert).Value / dblSumme * 100
'kumuliert
If lngZeile = lngZeile1 Then
.Cells(lngZeile, lngSpKum).Value = .Cells(lngZeile, lngSpErg).Value
Else
.Cells(lngZeile, lngSpKum).Value = .Cells(lngZeile - 1, lngSpKum).Value + _
.Cells(lngZeile, lngSpErg).Value
End If
Next
'Summe eintragen
.Cells(.Rows.Count, lngSpWert).End(xlUp).Offset(1, 0).Value = dblSumme
End If
End With
End Sub
Sub AuswertungFormel()
'Trägt die Auswertungsformeln im Blatt ein
Dim lngZeile As Long, objWks As Worksheet
Dim lngZeileL As Long
Const lngSpWert As Long = 3 'Spalte C
Const lngSpErg As Long = 4 'Spalte D
Const lngSpKum As Long = 5 'Spalte E
Const lngZeile1 As Long = 2 '1. Zeile mit Wert
Set objWks = ActiveSheet
With objWks
'Letzte Zeile berechnen
lngZeileL = .Cells(.Rows.Count, lngSpWert).End(xlUp).Row
If lngZeileL