Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
844to848
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
844to848
844to848
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Kann der DSUM() formel ein Array als Parameter ueb

Kann der DSUM() formel ein Array als Parameter ueb
10.02.2007 15:11:05
Axel
Hallo,
Aus meiner "urspuenglichen" Forumsfrage (unten mit meiner Loesung) hat sich eine zweite Frage abgeleitet:
Weiss jemand ob man den Kriteriumparameter "Arg3" als Array uebergeben kann, wenn die DSUM in VBA benutzt wird:
Application.WorksheetFunction.DSum(Arg1, Arg2, Arg3)
Das ist ja mal ein richtiger Nussknacker gegenueber der ersten Frage....
Schoenes Wochenende,
Axel
*****Hier die Loesung zur urspuenglichen Frage, Wie man die DSUM() Formel wesentlich flexibler gestatlten kann bei multi-dimensionalen abfragen*******
Hier die Antwort / Loesung fuer die die es interessiert in diesem Forum.....
Wie schon ueber den Microsoftartikel angegeben, akzeptiert DSUM() eine Formel als Kriterium, wenn die Formel einen Boolean returnvalue gibt ("True" oder "False").
Dies geht zum Beispiel mit the EXACT() Formel. Da ich nach der suche einer Art "InListe" order "InText" formel war und es diese nicht mit "boolean return" gibt, habe ich die einfach mal als UDF (User defined Function) definiert und in meine DSUM() als Kriterium eingespeist.... PROSIT es klappt!
Somit kann man der DSUM() Formel ein sehr flexibles "oder" Kriterium einspeisen, insbesondere wenn man mehrere Dimension abfragt.
Ich finde das im Prinzip schon "sensationel", nur leider verliert unsere gute alte DSUM() an der ueblichen Performance.....
'*********************************************************

Function InSlashString(DBStartCell As String, SlashList As String) As Boolean
If (SlashList Like "*/" & DBStartCell & "/*") Then InSlashString = True Else InSlashString = False
End Function


Function InList(DBStartCell As String, CompareList As Range) As Boolean
Set MyRange = CompareList
InList = False
For Each cell In CompareList.Cells
If (DBStartCell Like cell) Then
InList = True
Exit Function
End If
Next
End Function

'************************************
Ich habe ein Beispiel als XLS datei angefuegt:
https://www.herber.de/bbs/user/40307.xls
Dies ist zwar die Loesung zu meiner urspuenglichen Frage, nur da die Performance zu wuenschen uebrig laesst, muss es da doch noch etwas anderes geben (ausser diesen crazy shift+ctrl+enter array Formeln)?
Schoenes Wochenende,
Axel

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

Betreff
Datum
Anwender
Anzeige
AW: Kann der DSUM() formel ein Array als Parameter
10.02.2007 19:15:27
fcs
Hallo Axel,
statt den UDF in der Tabelle kannst du auch Standard-Tabellenfunktionen einsetzen, um die Wahrheitswerte zu ermitteln. Diese sind typischerweise wesentlich schneller als UDF.
Kannst ja mal probieren, ob die Berechnungen beschleunigt werden.
Bezüglich der Verwendung eines Array für den Kriterienbereich als Parameter kann ich leider nichts sagen. Da die Funktionen unter VBA typischer Weise unter VBA die gleichen Parametertypen erfordern wie in der Tabelle gehe ich davon aus das die Kriterien immer als Range-Objekt angegeben werden müssen. Ein Versuch die Kriterien in ein 2-dimensionales einzulesen und dann als Kriterien für DSum zu verwenden scheiterte jedenfalls.
Gruss
Franz
Tabellenblattname: Sheet1
B              C        D                E               F      G           H                   I                   J                   K
2         InList() UDF                                                          Match List Crit 1   Match List Crit 2   Match List Crit 3   Match List Crit 4
3               Crit 1   Crit 2   Crit 3                  Crit 4   Number                       a                   z                   y                   x
4                 Wahr     Wahr     Wahr                    Wahr                                d                   c                   f                   a
5                                                                                               f
6                                          Return Value of DSUM:        7
7
8
9  InSlashString() UDF                                                          Match List Crit 1   Match List Crit 2   Match List Crit 3   Match List Crit 4
10               Crit 1   Crit 2   Crit 3                  Crit 4   Number                 /a/d/f/               /c/z/                /y/f               /a/x/
11                 Wahr     Wahr     Wahr                    Wahr
12
13                                          Return Value of DSUM:        7
Benutzte Formeln:
B4:  =WENN(ZÄHLENWENN($H$3:$H$6;B22)>0;WAHR;FALSCH)
B11:  =WENN(ISTFEHLER(SUCHEN(B22;$H$10;1));FALSCH;WAHR)
C4:  =WENN(ZÄHLENWENN($I$3:$I$6;C22)>0;WAHR;FALSCH)
C11:  =WENN(ISTFEHLER(SUCHEN(C22;$I$10;1));FALSCH;WAHR)
D4:  =WENN(ZÄHLENWENN($J$3:$J$6;D22)>0;WAHR;FALSCH)
D11:  =WENN(ISTFEHLER(SUCHEN(D22;$J$10;1));FALSCH;WAHR)
E4:  =WENN(ZÄHLENWENN($K$3:$K$6;E22)>0;WAHR;FALSCH)
E11:  =WENN(ISTFEHLER(SUCHEN(E22;$K$10;1));FALSCH;WAHR)
F6:  =DBSUMME($B$21:$F$110;$F$3;$B$3:$E$4)
F13:  =DBSUMME($B$21:$F$110;$F$10;$B$10:$E$11)
Namen in der Tabelle:
Sheet1!_FilterDatenbank:  =Sheet1!$B$21:$F$110

Anzeige
AW: Kann der DSUM() formel ein Array als Parameter
11.02.2007 11:07:29
Axel
Danke Franz, das ist ein EXCELLENTER TIP!
Gruss,
Axel

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige