Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: 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
Anzeige

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...
Anzeige
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 :)
Anzeige
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
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige