Hallo,
falls die Summenformel automatisiert eingefügt werden soll, kann dieser Code verwendet werden:
Option Explicit
Sub FillSums()
Dim sh As Worksheet
Dim iRow As Integer, iRows As Integer
Dim strSum As String
Dim Calc As XlCalculation
Set sh = ActiveSheet ' ActiveWorkbook.Sheets("Tabelle1")
Calc = Application.Calculation
Application.Calculation = xlManual
iRows = sh.UsedRange.Rows.Count
strSum = "=SUMIFS(R2C[-1]:R" & CStr(iRows) & "C[-1],R2C[-2]:R" & CStr(iRows) & "C[-2],RC[-2],R2C[-3]:R" & CStr(iRows) & "C[-3],RC[-3])"
For iRow = 2 To sh.UsedRange.Rows.Count
sh.Cells(iRow, 4).FormulaR1C1 = strSum
VBA.DoEvents
Next
Application.Calculation = Calc
End Sub
Dieser Befehl fügt in die Spalte D ab Zeile 2 die Summenformel im aktuellen Tabellenblatt ein. Falls ein bestimmtes Tabellenblatt angesprochen werden soll, muss der auskommentierte Befehl anstelle "ActiveSheet" eingesetzt werden.
Kurze Erläuterung:
Vor dem Einfügen wird die Automatische Berechnung auf Manuell gestellt, um ein zügiges Einfügen der Massen Formeln gewährleisten zu können.
Das Einfügen von 6000 Formeln nimmt schon eine gewisse Zeit in Anspruch.
Der Befehl "vba.DoEvents" dient nur dazu, dass Excel weiterhin auf Eingaben reagiert. Ohne diesen Befehl zeigt Windows manchmal an, dass die Anwendung nicht mehr reagiert.
Am Ende wird die vorherige Berechnungsart wieder aktiviert. Dieser Befehl kann abhängig von der Komplexität anderer Tabellen auch eine gewisse Zeit in Anspruch nehmen.
VG, BigBen
|