Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
956to960
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
956to960
956to960
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

anstelle summenprodukt benutzerdef Funktion

anstelle summenprodukt benutzerdef Funktion
02.03.2008 15:29:55
Peter
Guten Tag
Ich habe ein Workbook mit zwei Worksheets („Abfrage“ und „Quelldaten“).
Im Workbook „Abfrage“ werte ich mit einer Formel, die aus zwei Funktionen SUMMENPRODUKT besteht, Einträge im Workbook „Quelldaten“ aus.
Zellinhalte:
A2: „E.1“
B2: =SUMMENPRODUKT((Ref=$A2)*((_C="C")*(_A0))*_A)+SUMMENPRODUKT((RefW=$A2)*((_C="D")*(_A0))*_A)  ergibt 40
C2:
=SUMMENPRODUKT((Ref=$A2)*((_C="C")*(_V0))*_V)+SUMMENPRODUKT((RefW=$A2)*((_C="D") *(_V0))*_V)  ergibt -100
Die Argumente _A, _V, _C, etc. sind benannte Bereiche im Worksheet "Quelldaten"
Nun möchte ich die Formeln mit Hilfe einer benutzerdefinierten Funktion vereinfachen und jeweils nur noch zwei Argumente übergeben, da die anderen Argumente immer fix sind.
in D2 möchte ich mit =cw(A2;"_A") zum gleichen Wert gelangen wie in B2 und in
in D2 möchte ich mit =cw(A2;"_V") zum gleichen Wert gelangen wie in C2
Stattdessen erhallte ich „#WERT!
Im Moment sehe ich noch nicht, wo der Haken in der selbst gebastelten Funktion ist:

Function cw(Position As String, Periode As Name) As Single
'bei Standard wir auf Feld A2 referenziert
'bei Periode wird der Bereichname "_A" eingegeben
'Periode entspricht _A (für aktuelle Zahlen, resp. _V für Vorjahreszahlen
cw = WorksheetFunction.SumProduct(([Ref] = Position) * (([_C] = "C") * ([Periode]  0)) * [Periode]) _
+ WorksheetFunction.SumProduct(([RefW] = Position) * (([_C] = "D") * ([Periode]  0)) * [Periode])
End Function


Kann mir jemand weiterhelfen?
Ich habe die Beispieldatei hochgeladen: https://www.herber.de/bbs/user/50358.xls
Danke, Peter

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: anstelle summenprodukt benutzerdef Funktion
02.03.2008 18:48:00
closer
Hallo Peter,
meines Wissens kann die Funktion SUMMENPRODUKT bzw. SumProduct unter VBA nur reine Range-Objekte verarbeiten.
Die im Tabellenblatt funktionierenden Rechenoperationen mit z.B. Wahrheitswerten funktionieren unter VBA nicht. In deinem Fall müsste man die Funktion komplett mit entsprechenden For-Next-Schleifen und Summierungen in VBA abbilden.
Dies ist aber deutlich langsamer als die Tabellenfunktion SUMMENPRODUKT.
Ich persönlich halte es für schlecht, wenn nicht alle Parameter/Werte, mit denen eine benutzerderfinierte Funktion rechnen soll, mit dem Funktionsaufruf übergeben werden. Das Holen/Abrufen der Werte in der Prozedur kann Probleme bei der automatischen Aktualiserung der Berechnungsergebnisse bereiten.
Gruß
Franz

Anzeige
AW: anstelle summenprodukt benutzerdef Funktion
02.03.2008 20:53:00
Peter
Hallo Franz
Vielen Dank für deine Info. Das führt mich dazu von meinem UDF-Projekt Abschied zu nehmen.
Gruss, Peter

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige