AW: Teilsummen per VBA bei 2 Kriterien
28.12.2012 13:05:50
Mexsalem
Hallo Beverly,
danke für deinen VBA-Code. Leider passiert nicht das Erwartete. Ich erhalte - trotz des gesetzten Autofilters in den Spalten A-K - nur in L1 eine Null, keine weiteren Teilsummen.
Ich wollte die Formellösung von serge in meinen Code einbauen, verzweifle aber daran, dass mir Excel die Formel nicht einsetzten will. Hintergrund ist, dass die Tabelle eventuell noch sortiert werden soll und die Teilsummen dann auch bei neuer Sortierung angezeigt werden soll (Vorteil Formel).
In L2 habe ich diese Formel eingesetzt :
=WENN(UND(B2&C2=B1&C1;B3&C3B2&C2);SUMME(K$2:K2)-SUMME(L1:L$2);
WENN(UND(B2&C2B1&C1;B3&C3B2&C2);SUMME(K$2:K2)-SUMME(L$1:L1);""))
Mit msgbox Range("L2").formula erhalte ich die englische Formelübersetzung :
=IF(AND(B2&C2=B1&C1,B3&C3B2&C2),SUM(K$2:K2)-SUM(L1:L$2),
IF(AND(B2&C2B1&C1,B3&C3B2&C2),SUM(K$2:K2)-SUM(L$1:L1),""))
Möchte ich nun diese Formel per VBA in der Variante Formula einsetzen, bekomme ich einen "Laufzeitfehler 1004 Anwendungs- oder objektdefinierter Fehler":
Sub SetMyFormula()
Dim Formel
Formel = "=IF(AND(B2&C2=B1&C1,B3&C3B2&C2),SUM(K$2:K2)-SUM(L1:L$2), _
IF(AND(B2&C2B1&C1,B3&C3B2&C2),SUM(K$2:K2)-SUM(L$1:L1),""))"
Range("L2").Formula = Formel
End Sub
Ich verwende noch Excel 2003 und dachte es gibt hier Probleme bei englischen Formeln, aber auch die deutsche Variante FormulaLocal bringt mir den Laufzeitfehler.
Sub SetMyFormula()
Dim Formel
Formel = "=WENN(UND(B2&C2=B1&C1;B3&C3B2&C2);SUMME(K$2:K2)-SUMME(L1:L$2); _
WENN(UND(B2&C2B1&C1;B3&C3B2&C2);SUMME(K$2:K2)-SUMME(L$1:L1);""))"
Range("L2").FormulaLocal = Formel
End Sub
Wenn ich die englische Formel direkt in die Zelle (F2) einsetze, meckert er mir, da die Kommata stören. Ersetze ich diese druch Semikolon, nimmt er zwar die Formel an, gibt aber #Name? aus.
Nehme ich die Variante FormulaR1C1
Sub SetMyFormula()
Dim Formel
Formel = "=IF(AND(RC[-10]&RC[-9]=R[-1]C[-10]&R[-1]C[-9],R[1]C[-10]&R[1]C[-9]RC[-10]&RC[-9]), _
SUM(R2C[-1]:RC[-1])-SUM(R[-1]C:R2C), IF(AND(RC[-10]&RC[-9]R[-1]C[-10]&R[-1]C[-9],R[1]C[-10]&R[1]C[-9]RC[-10]&RC[-9]), _
SUM(R2C[-1]:RC[-1])-SUM(R1C:R[-1]C),""""))"
Range("L2").FormulaR1C1 = Formel
End Sub
funktioniert die Formeleintragung in Zelle L2 (zeigt diese als deutsche Formel in A1-Schreibweise an).
Ich benötige jedoch die Variante Formula oder FormalLocal, damit ich die Spalten variabel ansprechen kann. Hat hier jemand einen Tipp für mich, wie das mit Formula / FormulaLocal funktionieren könnte ?
Spalte B = ColNummer
Spalte C = ColArt
Spalte K = ColBetrag
Spalte L = ColSumme
Gruß
Mexsalem