Hallo Henning,
damit das Makro auch bei eingefügten Spalten noch richtig funktioniert, musst Du die Bezüge anpassen.
Ich habe das mal in Abhängigkeit der Beschriftung "Budget" gemacht, das Makro funktioniert nun bei 1,2,3,4,... eingefügten Spalten vor "Budget" :
Sub VariableSpalten()
Dim Arr As Variant, lngLS As Long, lngS As Long
Dim rngBereich As Range, rngPSP As Range
Dim L As Long
lngS = Application.Match("Budget", Rows("14:14"), 0) - 5 'Sucht "Budget" in Zeile 15
lngLS = Cells(14, Columns.Count).End(xlToLeft).Column
Set rngPSP = Range("C15").CurrentRegion.Offset(1).Resize(10000, 1)
Set rngBereich = Range("C15").CurrentRegion.Offset(1).Resize(10000, lngLS - 1)
Arr = rngBereich
For L = 1 To UBound(Arr)
If Arr(L, 3 + lngS) = "" Then
Arr(L, 3 + lngS) = WorksheetFunction.SumIf(rngPSP, Arr(L, 1) & ".*", _
Range("E15:E10000").Offset(, lngS))
Arr(L, 4 + lngS) = WorksheetFunction.SumIf(rngPSP, Arr(L, 1) & ".*", _
Range("F15:F10000").Offset(, lngS))
Arr(L, 5 + lngS) = WorksheetFunction.SumIf(rngPSP, Arr(L, 1) & ".*", _
Range("G15:G10000").Offset(, lngS))
Arr(L, 6 + lngS) = WorksheetFunction.SumIf(rngPSP, Arr(L, 1) & ".*", _
Range("H15:H10000").Offset(, lngS))
If Arr(L, 3 + lngS) = 0 Then Arr(L, 3 + lngS) = ""
If Arr(L, 4 + lngS) = 0 Then Arr(L, 4 + lngS) = ""
If Arr(L, 5 + lngS) = 0 Then Arr(L, 5 + lngS) = ""
If Arr(L, 6 + lngS) = 0 Then Arr(L, 6 + lngS) = ""
End If
Next
'Range("C15:H10000") = Arr
rngBereich = Arr
End Sub
Gruß, NoNet