Hallo! Also ich glaube / hoffe wir nähern uns dem Ergebis. :-) Habe zwar noch ein paar Fragezeichen im Kopf - auch deshalb (Zitat):
Defakto gibt es schon einen fixen Punkt wie ich die letzte Reihe ermittele. DIe letzte Reihe ist eben die letzte Reihe, welche automatisch ermittelt wird. :-D
Bin mir da nicht sicher. der Anfangscode schreibt ja eine auch mit Versatz die Summe rein. Die ist aber um ein Verschoben zu deinem Wert. Um es zu verdeutlichen ein Bild. :-)
Die 9 ist die Summe aus dem Code vorher. Da das die letzte Zeile ist, sollte in der Spalte die Summe entstehen. Dann gibt es aber zwischen Datenbereich und Summe eine leer Zeile (rot markiert). Deshalb die Frage. Steht die letzte Zeile in Spalte B oder C. Aber um nicht nur Fragen zu stellen, hier auch mal wieder Code. Der läuft jetzt so wie oben dargestellt. Hatte auch eine Version die ab der roten Zeile einträgt, dann sollte aber die Zelle mit xxx befüllt sein. Da ich von ausgehe, dass es so gewollt ist (später) summiert der Code für jeder der 4 Zeilen (bevor es wieder losgeht). Deshalb auch für jeden Bereich die Summe unten drunter (also 4 ), Mal bitte schauen, wie es hilft, bzw. wo wir was ändern müssen. Achja, der Code ist so weingestellt, dass er nur Eingaben in eine zelle berücksichtigt. Sollten mehrere Zellen gleichzeitig geändert werden passiert nix. Könnte man aber auch ändern. VG
Private Sub Worksheet_Change(ByVal Target As Range)
'nur wenn eine Zelle geändert wurde ausführen
If Target.Count = 1 Then
'prüfen ob Spalte E bis M
If Not Intersect(Target, ActiveSheet.Columns("E:M")) Is Nothing Then
'warum eigentlich in Spalte C gezählt -> sollte das ggf. Spalte B also 2 sein
letztezeile = ActiveSheet.Cells(Rows.Count, 3).End(xlUp).Row
'nur wenn ab Zeile 5 bis Zeile vor der Summe
If Target.Row > 4 And Target.Row < letztezeile Then 'hier noch die Änderung zur Prüfung
nächstfreieZellefipa = 8
For zeile = 5 To letztezeile
Cells(zeile + 1, 2).Value = Application.WorksheetFunction.Sum(Range(Cells(zeile, 5), Cells(zeile + 1, nächstfreieZellefipa - 2)))
zeile = zeile + 3
Next
'jetzt summieren nur die Spalte summieren
spalte = Target.Column
zeile2 = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
summe = 0
'jeden vierten wert addieren
Start = 4 + (Target.Row Mod 4)
If Start = 4 Then Start = 8
For l = Start To letztezeile - 1 Step 4
summe = summe + ActiveSheet.Cells(l, spalte)
Next l
'jetzt eintragen
versatz = Start Mod 4
If versatz = 0 Then versatz = 4
ActiveSheet.Cells(letztezeile + versatz, spalte) = summe
End If
End If
End If
End Sub
|