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

Summenprodukt - Var. Array (Indirekt)

Summenprodukt - Var. Array (Indirekt)
26.05.2020 17:16:07
ChrisSPL
Hallo zusammen,
ich möchte jeden 6ten Wert einer Tabellenstruktur summiert haben, innerhalb eines variablen Bezugsbereich - mit Indirekt.
Das klappt soweit bereits in meiner Datei.
Ich bekomme es nur nicht hin, dass beide Teile des Arrays mit der INDIREKT Formel laufen.
Sorry, ich kann es nicht sehr gut beschreiben.
Bezogen auf die Datei:
"($Hx:$ARx)" sollte eig. genau meiner INDIREKT-Formel im zweiten Teil des Arrays entsprechen, aber die Formel läuft derzeit nur, wenn ich den Bezugsbereich starr festlege. Meiner Logik nach müsste ich eig. nur meine INDIREKT-Formel aus dem zweiten Teil des Arrays kopieren und dann durch diese "($Hx:$ARx)" ersetzen, das funktioniert aber nicht.
Ich verstehe nicht warum...
Würde mich sehr freuen, wenn sich jemand das kurz ansehen könnten, um mir auf die Sprünge zu helfen.
https://www.herber.de/bbs/user/137761.xlsx
Vielen Grüße,
Chris

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: mit INDEX() viel einfacher möglich ...
26.05.2020 19:29:09
neopa
Hallo Chris,
... in AX2 so: =SUMMENPRODUKT((H2:AR2)*(REST(SPALTE(H2:AR2);6)=2)*(F$1:AP$1&lt=AW2))
und nach unten kopieren.
Gruß Werner
.. , - ...
Ich sehe kein INDEX(), Werner! ;-) owT
26.05.2020 21:20:58
Luc:?
:-?
AW: das kann man hier auch nicht, ...
27.05.2020 08:22:24
neopa
Hallo Luc,
... denn den Betreff hatte ich als quasi vorab geschrieben und dann leider vergessen diesen zu ändern, nachdem ich feststellte, dass im vorliegenden Fall eine Lösungsformel sogar ganz ohne INDEX() möglich ist.
Gruß Werner
.. , - ...
Danke, Werner!
27.05.2020 09:08:23
ChrisSPL
Hallo Werner,
vielen Dank für die Hilfe. Du hast mir auch gezeigt, dass ich wieder mal zu kompliziert gedacht habe :-D.
Viele Grüße,
Chris
Anzeige
AW: bitteschön owT
27.05.2020 09:39:24
neopa
Gruß Werner
.. , - ...
Leider noch ein Problem: TEXT Summenprodukt
27.05.2020 10:29:21
ChrisSPL
Hallo nochmals,
der Klassiker, ich habe in meinem Bezugsbereich auch Text bzw. Formelergebnis '""'. Nun spuckt Summenprodukt natürlich #WERT aus.
Ich habe versucht es mit ISTZAHL zu umgehen, aber dann wird nur mit WAHR/1 summiert und nicht die Zahlen aus dem Bereich herangezogen.
Was muss ich denn da jetzt noch hinzufügen, damit die Formel von Werner auch mit Text/Formelergebnis '""' im Bezugsbereich funktioniert? :-S
Sorry, ich habe bei meiner Bsp.-Datei nicht an dieses Szenario gedacht.
Bezugsbereich mit diesem Problem: H2:AR2
Danke im Voraus nochmals für die Hilfe!
Viele Grüße,
Chris
Anzeige
AW: dann ...
27.05.2020 10:48:17
neopa
Hallo Chris,
... so: =SUMMENPRODUKT((REST(SPALTE(H2:AR2);6)=2)*(F$1:AP$1&lt=AW2);H2:AR2)
Gruß Werner
.. , - ...
AW: dann ...
27.05.2020 12:06:38
ChrisSPL
Hallo Werner,
vielen Dank nochmals für deine Hilfe, das geht so.
Ich verstehe es zwar überhaupt nicht, weil im Endeffekt ich nie einen Unterschied sah etwas mit "*" innerhalb eines Arrays zu formulieren oder dann in x Arrays mit ";" zu trennen.
Aber bin auch absolut kein Experte.
Viele Grüße,
Chris
AW: nur Zahlen-/ Wahrheitswerte multiplizierbar...
27.05.2020 12:20:19
neopa
Hallo Chris,
... andernfalls kommt es immer zu einem Fehlerwert.
Der Standardsyntax von SUMMENPRODUKT() sieht deshalb auch nur eine Auflistung von Matrizen und Arraya getrennt durch Semikolon vor.
In meiner Formel ist H2:AR2 eine Matrix und (REST(SPALTE(H2:AR2);6)=2)*(F$1:AP$1&lt=AW2) ein Array.
Gruß Werner
.. , - ...
Anzeige
Werner, VIELEN DANK, jetzt hab ich verstanden! owT
27.05.2020 12:48:14
ChrisSPL
.
AW: gerne owT
27.05.2020 15:33:16
neopa
Gruß Werner
.. , - ...
Das ist aber nicht sauber formuliert, ...
29.05.2020 02:19:01
Luc:-?
…Werner,
denn du weißt doch, dass µS das 3.Argument von AGGREGAT in Bereiche und Matrizen unterscheidet, was allerdings ebenfalls nicht ganz sauber ist. Sowohl ZellBereiche (Ranges) als auch Datenfelder (Arrays) können in Xl als Matrix auftreten. Das wird durch Zeile und Spalte festgelegt. Normalerweise hat eine Matrix mehr als 1 Spalte und auch mehr als eine Zeile, in Xl ist aber alles eine Matrix, was kein Einzelwert° ist, denn jeder Bereich und jedes Datenfeld hat immer 2 Indizes (einer kann mitunter entfallen). Nur in VBA ist das mitunter anders, denn da gibt's auch echte Kovektoren (horizontal gerichtet; echte Vektoren, vertikal gerichtet, sind allerdings über einen kleinen Umweg auch möglich - Aufbau mit skalaren Tensoren als Elemente). Xl ist also grundsätzlich matrixorientiert, Arrays in ProgrammierSprachen sind es idR nicht - sie setzen sich aus 1stufigen Tensoren zusammen (2- und n-stufig) oder entsprechen diesen (1stufiger Vektor bzw Kovektor), während das n-dimensionale VBA-Array sich eher aus dem Xl-Gebrauch ableitet (die andere Form gibt's dort aber auch).
SUMMENPRODUKT verarbeitet idR gleichgroße und gleichgerichtete Matrizen, indem es jedes Element der einen Matrix mit dem gleichpositionierten Element der anderen Matrizen multipliziert und die so erhaltenen Produkte zum Schluss summiert. Die fktsinterne Multiplikation eines Vektors mit einem Kovektor würde also nicht fktionieren, sie sind nicht gleichgerichtet. Deshalb muss das fktsextern geschehen, was durch den *-Operator veranlasst wird. Hierbei wird anders gerechnet: Jedes Element des Vektors wird mit jedem Element des Kovektors multipliziert, gleiche ElementeAnzahl vorausgesetzt, so dass eine Matrix entsteht. Diese kann dann mit einer gleichgroßen und -gerichteten anderen Matrix auf die für SUMMENPRODUKT übliche Weise multipliziert wdn. Das wird so (inzwischen) auch in der Xl-Hilfe zur Fkt erwähnt. Das darf man aber nicht auf VBA übertragen, denn Arrays können dort nicht einfach per Operator * mit irgendwas multipliziert wdn (gilt auch für andere RechenOperationen). In Xl sorgt der FmlText-Interpreter dafür, dass so etwas möglich ist. Komplexe Argumente (als Ausdrücke) einer Fkt wdn stets zuerst berechnet (von innen nach außen). Dadurch wird die Schachtelung von Fktt erst ermöglicht.
° Es gibt allerdings auch 0stufige (skalare) Tensoren die in Xl gelegentlich als Ergebnis von Fktt auftauchen (zB ZEILE und SPALTE). Das sind dann quasi Matrizen aus nur einem Element, also mit nur einer Spalte und Zeile. Ein derartiges Array muss in VBA auch als solches behandelt wdn, sonst läuft die Rechnung in einen Fehler. Für mich sieht das übrigens so aus, dass intern tatsächlich mit Tensoren gearbeitet wird und man sich in diesen Fällen die Umwandlung in einen skalaren Einzelwert geschenkt hat. Pgmtechnisch sinnvoll ist das ohnehin, da man derartige Einzelwerte auch problemlos durch eine nur für Arrays bestimmte Schleife laufen lassen kann. Echte Einzelwerte können nämlich nicht indiziert wdn, was für Xl selbst aber auf Grund seiner MatrixStruktur irrelevant ist (jede Zelle kann indiziert wdn; das gilt auch für Datenfelder als Ergebnis von Ausdrücken).
Morhn u.FroPf, Luc :-?
PS: Du multiplizierst übrigens eine Bereichsmatrix mit einer gleichgroßen und -gerichteten DatenfeldMatrix (aus 0en und 1en). Beides könnte also alternativ auch als Array bezeichnet wdn. Verwendest Du INDEX mit einem Bereich, bleiben bekanntlich die ZellBezüge erhalten, anderenfalls sind sie futsch. Das passiert schon beim Setzen von -- vor den Bereichsbezug.
Anzeige
AW: ... möglich, aber er hat es verstanden ;-) owT
30.05.2020 13:00:19
neopa
Gruß Werner
.. , - ...
Möglich, aber auch wirklich alles?! ;-) owT
30.05.2020 20:25:57
Luc:?
:-?
AW: das ist sowieso selten der Fall owT
31.05.2020 08:48:09
neopa
Gruß Werner
.. , - ...

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige