Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1756to1760
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

Summenprodkt in VBA

Summenprodkt in VBA
05.05.2020 03:00:34
excelsocke
Hallo Miteinander
Kurze Erklärung des Tabellenauschnittes im Upload.
https:\/\/www.herber.de/bbs/user/137262.xlsx
D3:AH3 Datum vom 1. bis 31. als vollstandiges Datum Zellformat "DD"
bei Monaten mit 30 Tagen ist der"31." mit "" befüllt
für den Februar der 29. 30. 31. mit ""
In D4:AH4 beliebige Eurobeträge die Tageweise auf addiert werden sollen.
z.B. am 1. sind es 28 €
vom 2. bis 5. ebenfalls 28 €
am 6. wären es dann 87 €
usw. bis Monatsende.
Unter Excel würde ich dem Problem mit der Formel
Summenprodukt((D4:AH4)*((D3:AH3) kleinergleich heute()))
zu leibe rücken.
Ich möchte nun diesesProblem mit VBA lösen.
Ich habe es mit WsF.sumproduct(Range("D4:AH4")*(Range(D3:AH3) kleinergleich DATE)) versucht Fehler Meldung: Typen unverträglich
mit Application.Sumproduct(Range("D4:AH4")*(Range(D3:AH3) kleinergleich DATE)) dieselbe Fehlermeldung
mit WsF.Sumproduct(range(cells(...),cells().....usw.) ebenfals dieselbe Fehlermeldung
mit application.Sumproduct(range(cells(...),cells().....usw.) ebenfals dieselbe Fehlermeldung
Die Formel über FormulaR1C1 ins Tabellenblatt bringen möchte ich nicht.
Bin nun mit meinem Latein am Ende.
Ist dies auf diese Art mit VBA lösbar?
Wo liegt mein Fehler?
Ich hoffe ich habe mein Problem deutlich genug beschrieben.
Herzliche Grüße
Jörg

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
SumProduct folgt in VBA dessen Regeln und ...
05.05.2020 03:29:48
Luc:?
…der eigentlichen Syntax dieser Fkt, Jörg,
d.h., die Unterstützung durch den Xl-FmlText-Interpreter entfällt. Deshalb kannst du keine Arrays einfach miteinander multiplizieren, sondern musst das ggf vorher tun (auf VBA-übliche Weise!). Das bedeutet auch, dass du mehrere vollständige (Ko-)Vektoren/Matrizen als (kommagetrennte) Argumente liefern musst. In deinem Fall sind es gleichlange Kovektoren, wobei der 2. aus 0en und 1en bestehen muss und als eigenes Argument anzugeben ist. Zu seiner Erzeugung wirst du also eine Schleife benötigen.
Wenn du dir diese Arbeit ersparen willst, musst du auf Xl zurückgreifen und entweder per VBA einen gültigen FmlText in die relevanten BlattZellen unter der ihm entsprd ZellEigenschaft eintragen oder einen US-Original-FmlText bilden und mit der vbFkt Evaluate auswerten. Dann steht dir auch der FmlText-Interpreter in gewissem Umfang zV (Tipp: Benutze ActiveSheet.Evaluate, dann wird die Fml nur halb so oft berechnet, 2- statt 4mal).
Hatte schon darüber nachgedacht, ob ich nicht mal etwas zu SUMMENPRODUKT vs MMULT vs *-Operator schreiben sollte, für Xl. Scheint mir doch erforderlich zu sein…
Morhn, Luc :-?
„Die universelle Befähigung zur Unfähigkeit macht jede menschliche Leistung zu einem unglaublichen Wunder.“ Stapps ironisches Paradoxon
Nichtsdestotrotz Durchblick verbessern mit …

Anzeige
AW: Summenprodkt in VBA
05.05.2020 06:06:36
Daniel
Hi
Wie Luc schon erklärt hat, kannst du SummenProdukt so nicht in VBA verwenden.
Du kannst für diese Aufgabe aber auch das normale SummeWenn(s) verwenden, das geht auch in VBA, weil alles innerhalb der Funktion berechnet wird und keine Matrixberechnung in der Formel stattfindet.
=SummeWenn(D3:AH3;"
Das kannst du direkt in VBA verwenden:

WsF.SumIf(Range("D3:AH3"), "
Gruß Daniel
AW: Summenprodkt in VBA
05.05.2020 08:10:02
Luschi
Hallo Daniel,
bei mir klappt das in E_2013 & E_2019 nur so:
WsF.SumIf(Range("D3:AH3"), "<=" & CLng(Date), Range("D4:AH4"))
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Summenprodkt in VBA
05.05.2020 10:46:45
excelsocke
Hallo Daniel
Hallo Luschi
Vielen Dank für Eure Antwort.
Es klappt.
Gruß Jörg

159 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige