Hallo wieder! Also probiere mal unten den Code. Der zeigt zusätzlich in Spalte D noch die Summe an. Da ich nicht wußte, wo du in B die Gesamtsumme haben willst, habe ich sie mal in D auf höhe der Bezeichung Summe in Spalte A gepackt. Schau bitte mal, obdu die Variable vorletztespaltefipa noch brauchst. Die ist zwar deklariert und ihr wird ein Wert zugewiesen aber danach wird sie nich mehr genutzt.
Den "problematischen Teil" :-) - s. dein letzter Post - habe ich mal um eine Zeile (die mit dem +3) verkürzt. Zudem habe ich entgegen deinem Rat die 27 auf 32 erhöht. :-) Bitte mal so probieren. WEnn du die Spaltennummer von AF mit Spaltenummer von E also 32 - 5 rechnest kommst man zwar auf 27 aber trotzdem bleibt Spalte AF die 32 ste. Da unser Alphabet bis 26 geht und das Z ist, ist 27 bei AA - da würde ich mich sogar fast streiten wollen. :-)) Wenn du 27 lässt, wird nur bis AA addiert. Habe auch mal schnell deinen Daten überprüft. Die SUmme sollte 11110 sein. Dein Ergebnis war nur 9199. Differenz ist 1911. UNd der Bereich von Ab bis AF hat zusammen auch 1911. Der wird also nicht mitgezählt. Sollte vermlt. der Fehler sein. Bitte wieder prüfen und dann nochmal melden, damit wir ggf. nochwas ändern können. Falls du da sonst noch was brauchst, ruhig schreiben, insb. auch wegen der Gesamtsumme. VG
Private Sub Worksheet_Change(ByVal Target As Range)
Dim spalte As Long
Dim zeilesum As Long
Dim versatz As Long
Dim letztezeile As Long
Dim zeile As Long
Dim summe As Long
Dim l As Long
Dim vorletztespalte As Long
vorletztespaltefipa = Cells(3, Columns.Count).End(xlToLeft).Column - 1
zeilesum = Application.Match("Summe", ActiveSheet.Columns(1), 0)
'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:AF")) Is Nothing Then
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 < zeilesum Then 'hier noch die Änderung zur Prüfung
For zeile = 5 To letztezeile Step 4
Cells(zeile + 1, 2).Value = Application.WorksheetFunction.Sum(Range(Cells(zeile, 5), Cells(zeile + 1, 32)))
Next
'Summe in Spalte D
If (Target.Row Mod 4) <> 0 Then Cells(Target.Row, 4).Value = Application.WorksheetFunction.Sum(Range(Cells(Target.Row, 5), Cells(Target.Row, 32)))
'jetzt summieren
'jetzt die Spalte summieren
spalte = Target.Column
summe = 0
'jeden vierten wert addieren
versatz = (Target.Row Mod 4)
If versatz = 0 Then
Else
For l = 4 + versatz To zeilesum - 1 Step 4
summe = summe + ActiveSheet.Cells(l, spalte)
Next l
End If
'jetzt eintragen
versatz = (Target.Row Mod 4 - 1)
If versatz = -1 Then
Else
ActiveSheet.Cells(zeilesum + versatz, spalte) = summe
End If
'Gesamtsumme aber in Spalte D
ActiveSheet.Cells(zeilesum, 4) = Application.WorksheetFunction.Sum(Range(Cells(5, 4), Cells(zeilesum - 1, 4)))
End If
End If
End If
End Sub
|