Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1592to1596
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Summenprodukt mit Teilergebnis und Indirekt

VBA Summenprodukt mit Teilergebnis und Indirekt
20.11.2017 13:47:41
LX
Hallo Zusammen,
ich versuche per VBA einer Variable einen Wert zuzuweisen.
Sub Summe
Dim Sum as Long
Sum = Application.WorksheetFunction.Sumproduct(Subtotal(9,indirect(""A""&ROW(13:20000))*(B13: _
B20000=""X""))
MsgBox Sum
End Sub

Die Summe soll gebildet werden für alle gefilterten Werte der Spalte A von Zeile 13 bis 20000, wenn in der Spalte B der Ausdruck "X" steht.
Ich bekomme leider immer einen Syntaxfehler...
Weiß jemand woran das liegen kann?
Beste Grüße

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
B13:B20000 = "B13: _ B20000" !? owT
20.11.2017 14:00:39
Nigel
.
AW: B13:B20000 = "B13:B20000" !? owT
20.11.2017 14:01:39
Nigel
...
AW: B13:B20000 = "B13:B20000" !? owT
20.11.2017 14:13:41
LX
Das hat leider keinen Effekt, wenn ich die Anführungszeichen einfüge.
Vielleicht verstehe ich aber auch nicht genau, was du mir sagen möchtest...
AW: VBA Summenprodukt mit Teilergebnis und Indirekt
20.11.2017 14:13:32
Daniel
Hi
das liegt daran, dass du, wenn du Worksheetfunction einsetzt, hier nicht die Syntax aus den Excelzellen verwenden darfst, sondern die VBA-spezifische Syntax verwenden musst.
Dh dein: B13:B20000=""X"" müsste so geschrieben werden: Range("B13:B20000") = "X"
Ein weiterer Fehler in deiner Überlegung ist, dass du nicht beachtest hast, dass VBA nicht Matrixformelfähig ist. Dh. VBA kann einen Ausdruck wie Range("B13:B20000") = "X" nicht berechnen.
in deinem Fall müsstes du mit EVALUATE arbeiten (EVALUATE benötigt die Formel in englischer A1-Schreibweise und berechnet diese)
Sum = Evaluate("=Sumproduct(Subtotal(9,indirect(""A""&ROW(13:20000))*(B13:B20000=""X""))")
oder du schreibst die Formel in eine Zelle und liest dann diese Zelle aus.
die dritte Alternative wäre, das du die Schleife der Matrixformal in VBA nach programmierst:
dim Zelle as Range:
Sum = 0
for each Zelle In Range("A13:A20000").SpecialCells(xlcelltypevisible)
If Zelle.Offset(0, 1).Value = "X" then if IsNumeric(zelle.Value) Then Sum = Sum + Zelle.Value
Next
Gruß Daniel
Anzeige
AW: VBA Summenprodukt mit Teilergebnis und Indirekt
20.11.2017 14:27:42
LX
Hallo Daniel,
danke für die schnelle Antwort. Beide Vorschläge von dir funktionieren zwar. Allerdings kommt als Summe immer 0 raus. Was nicht dem korrekten Ergebnis entspricht?
Woran könnte das liegen?
Gruß LX
AW: VBA Summenprodukt mit Teilergebnis und Indirekt
20.11.2017 14:29:26
LX
ich korrigiere.... der letzte Vorschlag von dir funktioniert doch.
Danke!!! Ihr habt mir sehr geholfen :)
Ja, an der Vermengung von Xl- mit VBA-Notat!
20.11.2017 14:16:20
Xl-
Hallo, LX;
1. reicht es nicht, nur eine Xl-Fkt auf WorksheetFunction zu beziehen, Subtotal ist auch eine (Stichwort With-Konstruktion), Row und Indirect aber nicht!
2. kann mit Indirect nur die vbFkt Evaluate benutzt wdn, wobei der ganze FmlText in US-Notation angegeben wdn muss (als Text, führendes = kann entfallen)!
3. muss mit Application oder WorksheetFunction (beides zusammen hat die gleiche Bedeutung wie nur letzteres!) auch die VBA-Syntax eingehalten wdn, d.h., Bereiche müssen als Range angegeben und können nicht direkt miteinander multipliziert wdn!
Gruß, Luc :-?
„Die Intelligenzmenge ist auf diesem Planeten eine Konstante, die Bevölkerung nimmt aber zu!“ Auch deshalb informieren mit …
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige