AW: Summieren von einzelnen Zahlenblöcken
26.01.2009 16:34:00
einzelnen
Servus Henry,
per Makro so:
Option Explicit
Sub t()
Dim rSuche As Range, rFinde As Range, strErste As String, x As Long, y As Long, i As Long
Dim ZeilenArrayAnfang() As Long, ZeilenArrayEnde() As Long
Dim lngLetzte As Long, suchString As String
lngLetzte = Cells(Rows.Count, 1).End(xlUp).Row
Set rFinde = Range("A2:A" & lngLetzte + 1)
Set rSuche = rFinde.Find(what:=suchString, LookAt:=xlWhole, LookIn:=xlValues)
ReDim Preserve ZeilenArrayAnfang(y)
ZeilenArrayAnfang(y) = 1
y = y + 1
If Not rSuche Is Nothing Then
strErste = rSuche.Address
Do
If rSuche.Offset(-1, 0) = 1 And rSuche.Offset(1, 0) = "" Then
ReDim Preserve ZeilenArrayEnde(x)
ZeilenArrayEnde(x) = rSuche.Offset(-1, 0).Row
x = x + 1
Else
If rSuche.Offset(1, 0) = 1 And rSuche.Offset(-1, 0) = "" Then
ReDim Preserve ZeilenArrayAnfang(y)
ZeilenArrayAnfang(y) = rSuche.Offset(1, 0).Row
y = y + 1
Else
If rSuche.Offset(1, 0) = 1 And rSuche.Offset(-1, 0) = 1 Then
ReDim Preserve ZeilenArrayEnde(x)
ZeilenArrayEnde(x) = rSuche.Offset(-1, 0).Row
x = x + 1
ReDim Preserve ZeilenArrayAnfang(y)
ZeilenArrayAnfang(y) = rSuche.Offset(1, 0).Row
y = y + 1
End If
End If
End If
Set rSuche = rFinde.FindNext(rSuche)
Loop While Not rSuche Is Nothing And rSuche.Address strErste
Else
Exit Sub
End If
For i = LBound(ZeilenArrayAnfang()) To UBound(ZeilenArrayAnfang())
If ZeilenArrayEnde(i) - ZeilenArrayAnfang(i) + 1 > 5 Then
Range("B" & ZeilenArrayEnde(i)) = WorksheetFunction.Sum(Range("A" & ZeilenArrayAnfang(i) _
& ":A" & ZeilenArrayEnde(i)))
End If
Next i
End Sub
Hier passend zu deinem Beispiel mit Spalte A und Einsen. Ergebnis wird in Spalte B am Ende des Blocks reingeschrieben.
Gruß
Chris