Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1280to1284
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

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

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 :-?

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

325 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige