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

Forumthread: SUMPRODUCT in VBA - Wert mit Variable übergeben

SUMPRODUCT in VBA - Wert mit Variable übergeben
18.10.2012 11:29:03
Peter
Guten Tag
Ich habe nochmals eine Frage zu SUMPRODUCT in der VBA-Umgebung.
Nachstehender Code liefert mir das korrekte Ergebnis.
lngValue = [SUMPRODUCT((spxSum < 500000)*(spxAktiv="JA")*(spxFehler2<>"rot")*(len(spxText)<10))]
Nun möchte ich in der Formel nicht mehr eine fixe Zahl eingeben, sondern diese anderswo definieren.
Mein Versucht ist gescheitert, ich erhalte bei nachstehendem Code die Meldung "Typen unverträglich."
Dim FixWert as Double
FixWert = 5000000
lngValue = [SUMPRODUCT((spxSum < FixWert)*(spxAktiv="JA")*(spxFehler2<>"rot")*(len(spxText)<10))]
Wie muss ich die Variable "FixWert" übergeben?
Gruss, Peter

Anzeige

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

Betreff
Datum
Anwender
Anzeige
Tja, das kommt davon, wenn man diese ...
18.10.2012 11:45:09
Luc:-?
…unsäglichen [] benutzt, Peter;
dann verliert man nämlich das Gefühl dafür, worum es sich hier handelt. Hättest du lngValue = Evaluate("SUMPRODUCT((spxSum<500000)*(spxAktiv=""JA"")*(spxFehler2<>""rot"")*(len(spxText)<10))") geschrieben (nehme an, dass spxSum, spxFehler und spxText Namen sind, anderenfalls wäre mir ohnehin unklar, warum das fktionieren sollte!), wäre dir aufgefallen, dass hier ein FmlText evaluiert wird. Da kann man nicht einfach eine VBA-Variable hineinschreiben, sondern muss ihren Wert einfügen, also …
lngValue = Evaluate("SUMPRODUCT((spxSum<" & FixWert & ")*(spxAktiv=""JA"")*(spxFehler2<>""rot"")*(len(spxText)<10))")
Und warum überhpt Dim FixWert as Double? Der ist doch nur Long!
Gruß Luc :-?

Anzeige
AW: Tja, das kommt davon, wenn man diese ...
18.10.2012 13:44:10
Peter
Hallo Luc
Danke für die Antwort mit den verschiedenen Hinweisen. Mit der Verwendung von Evualate habe ich das richtige Ergebnis erhalten. Interessanterweise jedoch mit der nachfolgenden letzten Version nicht. Da entspricht das Ergebnis der Formel, wie wenn (spxSum<=" & FixWert & ") als Argument weggelassen würde, das heisst, er kann das in dieser Form nicht auswerten.
Weshalb klappt Variante 4 nicht? Ich habe dies vereinfacht in der Beispieldatei dargestellt.
https://www.herber.de/bbs/user/82178.xlsm
Gruss, Peter
Korrektes Ergebnis wird ermittelt bei Variante A, B, C und D
lngValue = Evaluate("SUMPRODUCT((spxSum<=5000000)*(spxAktiv=""JA"")*(spxFehler2<>""rot"")*(LEN(spxText)<10))")
lngValue = [=SUMPRODUCT((spxSum<=5000000)*(spxAktiv="JA")*(spxFehler2<>"rot")*(LEN(spxText)<10))] '1
lngValue = Evaluate("SUMPRODUCT((spxSum<=" & FixWert & ")*(spxAktiv=""JA"")*(spxFehler2<>""rot"")*(LEN(spxText)<10))")
lngValue = [=SUMPRODUCT((spxSum<=" & FixWert & ")*(spxAktiv="JA")*(spxFehler2<>"rot")*(LEN(spxText)<10))]

Anzeige
Das ist der Nachteil dieser Methode, ...
18.10.2012 13:55:22
Luc:-?
…Peter,
da kann man nichts so einfügen. Der FmlText muss komplett (unveränderlich) vorliegen, denn das ist quasi eine Kurzschrift, die eine bestimmte Schreibweise voraussetzt. Da geht nichts Anderes! Deshalb wird das weder empfohlen noch ist es gar Standard-VBA. Außerdem verlangsamt es (bei relevanter Menge derartiger Operationen) auch die Berechnung. Meinte das mit der Verwendung des Adjektivs unsäglich angedeutet zu haben. ;-)
Gruß Luc :-?

Anzeige
AW: Das ist der Nachteil dieser Methode, ...
18.10.2012 14:35:34
Peter
Hallo Luc
So ist's definitiv verständlich.
Danke!
Gruss, Peter
;

Forumthreads zu verwandten Themen

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