Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
1620to1624
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

Kostenstellzuordnung per Schlüssel

Kostenstellzuordnung per Schlüssel
14.05.2018 15:16:27
nellmann@web.de
Hallo zusammen,
im Stile der beigefügten Datei sollen Kostenstellen die jeweiligen Summen der Kostenträger zugeordnet werden.
https://www.herber.de/bbs/user/121602.xlsx
Um dem Erfasser die Arbeit zu vereinfachen, wird mit Schlüsseln gearbeitet.
Wie kann man aus dem Verweisfeld 'Var. Kosten' im Tabellenblatt "Tabelle" die Gesamtsumme 'Gesamtkosten' der Kostenstellen aus Tabellenblatt "Legende" zuordnen?
Mit einem Sverweis bekomme ich das leider nicht hin, hat jemand eine Idee?
Herzlichen Dank für euren Formelvorschlag und beste Grüße
Nils

36
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kostenstellzuordnung per Schlüssel
14.05.2018 15:42:06
{Boris}
Hi,
in Tabelle!C2:
=SUMMENPRODUKT(SUMMEWENN(Legende!A:A;TEIL(B2;ZEILE(INDIREKT("1:"&LÄNGE(B2)));1);Legende!C:C))
und runterkopieren.
VG, Boris
AW: Kostenstellzuordnung per Schlüssel
14.05.2018 16:10:21
nellmann@web.de
Hallo Werner und Boris,
vielen Dank für die schnelle Rückmeldung!
Beide Ansätze führen nach Rom bzw. zum erwünschten Ziel und das hilft mir sehr!
Beste Grüße
Nils
AW: z.B. mit ner Matrixfunktion(alität)sformel ...
14.05.2018 15:46:16
neopa
Hallo Nils,
... die Matrixfunktion(alität)sformel benötigt keines spez. Formelabschluss wie eine klassische Matrixformel:

=SUMME(INDEX(ISTZAHL(FINDEN(Legende!A$2:A$9;B2))*Legende!C$2:C$9;))

und Formel nach unten kopieren.
Gruß Werner
.. , - ...
Anzeige
wozu zusätzlich Index - nimm Summenprodukt
14.05.2018 16:16:53
WF
=SUMMENPRODUKT(ISTZAHL(FINDEN(Legende!A$2:A$9;B2))*Legende!C$2:C$9)
WF
AW: SUMMENPRODUKT() = SUMME(INDEX(...)) owT
14.05.2018 16:38:49
neopa
Gruß Werner
.. , - ...
2 Funktionen statt einer > Blödsinn
14.05.2018 16:51:18
WF
.
AW: sehe ich natürlich anders, denn ...
14.05.2018 17:25:57
neopa
Hallo WF,
... erstens ist das Ergebnis damit korrekt, zweitens kann man mit einer Funktionkombination ala FUNKTION(INDEX(..)) mehr als mit nur SUMMENPRODUKT() ermitteln und drittens stellt sich mir auch die Frage, warum Du z.B. AGGREGAT()-Formeln grundsätzlich ablehnst, obwohl diese öfters nicht nur eine Funktion ersetzt.
Gruß Werner
.. , - ...
Ende
14.05.2018 17:30:59
WF
.
AGGREGAT ...
16.05.2018 13:18:09
lupo1
... hat nicht den Mehrwert von TEXTVERKETTEN oder WENNFEHLER
... ist immer noch nicht in LibreOffice implementiert (für Grenzgänger wichtig)
... lässt sich durch andere Formeln ersetzen
... ist auch innerhalb von Excel für den geringen Nutzen zu "neu" (also xl2007- -untauglich)
Der geringe Zusatz-Nutzen liegt in Fehlerbehandlung als Argument.
Anzeige
AW: jede Formel lässt ersetzen und ...
16.05.2018 14:03:12
neopa
Hallo lupo,
.. insofern sehe ich das schon mal nicht als ein tragfähiges Argument.
WENNFEHLER() ist sicherlich eine sehr nützliche Funktion aber eben nur "nachgeordnet" zur jeweiligen Ergebnisermittlung beitragend. Außerdem gibt es diese Funktion mW auch erst seit 2007. Da Excel 2007 eine nach vieler Excelkundigen Meinung seitens MS nur eine Art Übergangsversion für die neueren Versionen ist, wird diese zunehmend weniger im Einsatz sein.
TEXTVERKETTEN () gibt es im Gegensatz zu AGGREGAT() (bereits seit Excel 2010) sogar erst ab Excel 2016, also zwei Versionen später. Diese Funktion kann hilfreich sein, aber ermöglicht mE jetzt nur noch einfacher der urspünglichen "Philsophie" von Excel zu widersprechen, wonach in einer Zelle auch nur ein Wert stehen sollte.
Aber wie auch immer, sicherlich wird es hier, wie immer und bei fast allen induviduelle verschiedene Ansichten geben.
Gruß Werner
.. , - ...
Anzeige
AW: sollte: "lässt sich ersetzen" lauten owT
16.05.2018 14:05:29
neopa
Gruß Werner
.. , - ...
Im Grunde genommen ist diese häufig zu findende …
14.05.2018 18:05:28
Luc:-?
…Anwendung von SUMMENPRODUKT ungefähr genauso „intelligent“ wie bspw SUMME(a+b), Walter & Werner;
SUMMENPRODUKT (eigentl ProduktSumme) bildet die Summe von elementweisen Produkten von Matrizen anhand derer Position. Mit einer solchen FmlForm wird aber nur eine Matrix an die Fkt übergeben, die also nicht mit irgendwas multipliziert wdn kann, wodurch nur noch die Summe ihrer Elemente gebildet wird. Das widerspricht dem eigentlichen Zweck von SUMMENPRODUKT, ein soge­nann­tes SkalarProdukt zu bilden und verdeckt letztlich diesen mathematischen Hintergrund, zumal die direkte Multiplikation 2er Matrizen oder von Vektor bzw Skalar und Matrix in Xl ebenfalls möglich ist, aber durchaus andere Ergebnisse liefern kann, was sich dann auch auf die Summe dieser Produkte auswirkt.
Mit WorksheetFunction.SumProduct kann man das in VBA übrigens nicht so simpel machen. Diese Möglichkeit ist in Xl also auch nur der Arbeitsweise des Xl-FmlText-Interpreters geschuldet.
Mit dem Vgl von SUMME, SUMMENPRODUKT (in beiden Formen) und MMULT hatte ich mich gerade zuvor (bevor ich das hier gelesen habe) beschäftigt. Um das zu zeigen, muss ich aber erst den Rechner wechseln.
Gruß, Luc :-?
„Die Intelligenzmenge ist auf diesem Planeten eine Konstante, die Bevölkerung nimmt aber zu!“ Auch deshalb informieren mit …
Anzeige
Dazu noch Bspp: …
15.05.2018 02:27:19
Luc:-?
Mit 2 gegebenen Matrizen können diverse Berechnungen durchgeführt wdn, die sich aus Multiplikation und anschließender Summation zusammensetzen.
Gegeben seien folgende Werte (als MatrixKonstante angegeben; im Original-ZellBereich sind keine LeerTexte "" enthalten, sondern stattdessen Leerzellen):
A11:B14: ={1."x";2."y";3."z";10.""}
C11:D14: ={4.5;6.7;8.9;"".10}
Daraus kann zB Folgendes berechnet wdn:
a) 40:=SUMMENPRODUKT(A11:B14;C11:D14)
b) #WERT!:=SUMMENPRODUKT(A11:B14*C11:D14)
c) 49:=SUMMENPRODUKT(MTRANS(A11:A14)*C11:D14)
d) 49:{=SUMME(INDEX(A11:B14;ZEILE(1:4);1)*INDEX(C11:D14;;;{1;1;1;1}))}
e) {"".64}:{=WAHL({1.2};"";SUMME(INDEX(A11:B14;ZEILE(1:4);1)*INDEX(C11:D14;;;{1;1;1;1})))}
f) {49;98;147;490}:{=SUMME(INDEX(INDEX(A11:B14;ZEILE(1:4);1)*INDEX(C11:D14;;;{1.1;1.1;1.1;1.1});;;{1.1;1.1;1.1;1.1}))}
g) {40.146}:{=MMULT(MTRANS(A11:A14);0+C11:D14)}
h) 186:{=SUMME(MMULT(MTRANS(A11:A14);0+C11:D14))}
i) 186:{=SUMMENPRODUKT(MMULT(MTRANS(A11:A14);0+C11:D14))}
j) 186:=SUMMENPRODUKT(A11:A14*C11:D14)
Diese Berechnungen können folgendermaßen definiert/erklärt wdn:
a) Frobenius-SkalarProdukt (bei nicht-numerischer Spalte)
b) Summe des Hadamard-Produkts (unmögl wg n-num Spalte)
c) ProdukteSumme (1.VektorT-Wert · Matrix)
d) singulare MxFml: ProdukteSumme (1.Vektorwert · 1.Matrixerweiterung)
e) duale MxFml: ProdukteSumme nur der anzeigbaren 1.Werte des Ergebnis-3-Tensors
f) plurale MxFml: Summen aller Teilmatrizen des TensorProdukts (Vektor · Matrix) als virtuell entfalteter 3Tensor1
g) plurale MxFml: Matrizen-Produkt (Sonderfall VektorT · Matrix)
h) singulare MxFml: Summe des VektorT-Matrix-Produkts
i) singulare MxFml: Summe des VektorT-Matrix-Produkts
j) Summe des Hadamard-Produkts (Sonderfall Vektor · Matrix)
__________
T für transponiert; 1 Dazu habe ich einen ExtraBeitrag mit praktischem Bsp vorbereitet.
Luc:-?
Anzeige
AW: erklärungsbedürftig ...
15.05.2018 10:19:50
neopa
Hallo Luc,
... und zwar Deine Formel für c)? Diese ergibt so wie von Dir angegeben keine 49 sondern nur #WERT! oder als Matrixformel abgeschlossen ein #NV aus, was so mE dafür auch richtig ist.
Die Formel i) ist überflüssig, weil diese diese die gleiche Rechnungsart wie mit Formel h) beinhaltet.
Anstelle Deiner Formel in d) würde ich einfach schreiben:
=INDEX($A11:$A14;SPALTE(A1))*SUMME($C$11:$D$14) und diese Formel dann nach rechts kopieren.
Viel einfacher als f) wäre: =A11*SUMME($C$11:$D$14) und Formel nach unten kopieren und Du hast Deine Ergebnisse Deiner puralen Ergebnismatrix der Formel f).
Wie sähe denn Deine Formelgestaltung für f) aus, wennn Du eine horizontale Ergebnismatrix ausgeben wolltest?
Gruß Werner
.. , - ...
Anzeige
Nähere Erläuterung: ...
15.05.2018 15:38:15
Luc:-?
Hallo, Werner,
schön, dass Du Dich meldest. ;-)
Zu Deinen Anmerkungen:
• Die Bspp sollten meinen vorhergehenden Beitrag illustrieren und dabei zeigen, dass …
1. SUMMENPRODUKT nicht immer dem gleich ist, was „draufsteht“, denn man kann es in Xl durchaus unterschiedlich anwenden, kaum aber in VBA;
2. es noch andere Möglichkeiten gibt, Summen von Produkten zu bilden (eine, die letztlich die Kombi-Funktion von SUMMENPRODUKT nachvollzieht, hattest Du ja bereits verwendet);
3. einige dieser anderen Möglichkeiten zu gleichen Resultaten führen, andere aber nicht (und SUMMENPRODUKT nicht immer nicht der MatrixFml-Form bedarf).
Und natürlich ging's mir bei dieser Demonstration nicht um irgendwelche alternativen Berechnungen, die uU gleiche Ergebnisse liefern (Deine Anmerkungen zu d/f), sondern um die Darstellung spezifischer Abläufe, die mit den Alternativen ggf nicht sichtbar würden.
• Zum Einzelnen:
a) zeigt eine NormalAnwendung von SUMMENPRODUKT, wobei letztlich nur jeweils ein Vektor beider Matrizen berücksichtigt wird (das elementweise Produkt der beiden anderen ergäbe 0en bzw beide wdn ausgefiltert, weil der erste der beiden kein MultiplikationsPartner des anderen sein kann).
b) fktioniert deshalb auch nicht, denn hier wird im Argument von SUMMENPRODUKT vorab das (elementweise) Hadamard-Produkt gebildet, was hier nur über Operatoren in einen Fehler laufen muss.
c) ergibt (in Xl14/2010) den von mir genannten Wert, wenn berücksichtigt wurde, dass die LeerTexte gelöscht wdn sollten (lässt sich per MxKonstantenFml nicht anders darstellen → einzige Alternativen sind anderer Text oder 0, was beides nicht gewollt wäre). Mein Ergebnis ist auch logisch, da ja hier nicht primär eine Produktsumme, sondern nur eine Summe gebildet wird. Die ProduktBildung besorgt nicht die Fkt, sondern der Xl-FmlText-Interpreter und der liefert mangels Multi­plikations­partnern auch #NV-Werte, die bei der Mitteilung an Xl, dass es sich um eine MxFml handelte und deshalb alle Werte berücksichtigt wdn sollen, auch #NV-Werte an die Fkt weitergibt, was folglich zum Gesamtergebnis #NV führt. Ohne diese Mitteilung verwendet Xl nur den 1.Wert des transponierten Vektors, was der Fkt dann wenigstens die (nun nur noch erforder­liche) Summation erlaubt.
d) zeigt ähnliche Allüren, denn obwohl jedem Element des Vektors eine Kopie der ganzen Matrix als Partner zV steht, wird nur mit dem 1.Element des Vektors gerechnet, was einerseits daran liegt, dass hier die MxFml-Form allein nicht ausreicht und andererseits wohl auch nur ein Durchlauf erfolgt, obwohl einer pro VektorElement erforderlich wäre (ich hatte das in letzten Beiträgen zu meinem „biforumellen“ Tensor-Exkurs - mit Abstecher zur MxFml-Problematik auf OL - alles zumindest absteigend miteinander verlinkt - behandelt). Dazu muss das Ganze noch „entfaltet“ wdn (vgl e/f).
e) zeigt, dass neben der MxFml-Form auch noch die Auswahl von 2 Zellen erforderlich ist, um wenigstens alle (allein) in Xl auch abbildbaren (jeweils 1.) Werte zu ermitteln. Nur diese können ohne „Entfaltung“ des virtuellen 3Tensors (hier Vektor mit Matrizen als Elemente) als Argument (in einem Durchlauf) weitergegeben wdn.
f) realisiert die in e bereits erwähnte „Entfaltung“ des virtuellen 3Tensors derart, dass einer Xl-Fkt wie SUMME alle Werte jeder Matrix des 3Tensor-Vektors nacheinander in mehreren Durchläufen (hier 4) positioniert zV gestellt wdn. Deine AlternativFml mag einfacher sein, bringt aber keinen weitergehenden ErkenntnisGewinn bzgl der Tatsache, dass Xl in der Lage ist, auch solche Tensoren zu berechnen und uU sogar weiter zu verarbeiten (wohl ein Xl-Allein­Stellungs­Merkmal!). Diese, ob gewollt oder nicht, geniale Universalität der Xl-FmlText-Interpretation wäre so niemals bemerkt worden (ein anderer Aspekt derselben ist die Behandlung von WENN und WAHL und die Bereitstellung von ObjektBezügen durch INDEX, wann immer möglich). Genau das wollte ich hiermit zeigen*!
g) zeigt das Matrizenprodukt (ein Kovektor) und soll hier nur die Grundlage von h/i visualisieren.
h) bildet per MxFml die Summe von g, während …
i) das Gleiche tut, dabei aber zeigt, dass SUMMENPRODUKT hier die MxFml-Form nicht überflüssig macht, übrigens auch nicht INDEX(…;;).
j) bildet ein positionsbezogenes elementweises Produkt eines Vektors mit einer Matrix, die man auch als aus Vektoren (als Elemente eines Kovektors) bestehend auffassen kann, was die Bezeichnung als Hadamard-Produkt rechtfertigen sollte. Dessen Rolle wird allerdings im Ggsatz zu anderen Vektor-/MatrixOperationen als wenig bedeutend charakterisiert (obwohl es als einziges Argument von SUMMENPRODUKT von Xl-Fml-Cracks geradezu inflationär eingesetzt wird — nur zur Bildung der Summe seiner Elemente, was beides zusammen der eigentl Aufgabe von SUMMENPRODUKT entspräche! ;-]).
Das StandardSkalarprodukt als einwertiges Ergebnis {Skalar bzw 0Tensor oder Tensor(0,0)} der Multiplikation 2er Vektoren wird auch als inneres Produkt bezeichnet, dem dann das mehrwertige äußere, Kreuz- bzw VektorProdukt ggübersteht. Das habe ich hier nicht behandelt, weil ich mich damit noch nicht ausgiebig zu Xl-Bedingungen befasst habe. Könnte aber auch recht interessant wdn! ;-)
* Im angekündigten praktischen Bsp wird ebenfalls so etwas enthalten sein - zT ebenfalls einfacher zu ermitteln, weshalb ich noch einen komplizierteren Zusatz eingebaut habe! Lass Dich überraschen! ;-)
Gruß, Luc :-?
Anzeige
AW: meine Feststellungen hierzu ...
16.05.2018 10:00:50
neopa
Hallo Luc,
... nachfolgend nur zu den Punkten wo ich zumindest teilweise anderer Meinung bin bzw. wo noch Klärungsbedarf besteht.
zu 3. wenn eine SUMMENPRODUKT()-Formel nur als eingegebene Matrixformel ein korrektes Ergebnis ergibt, dann reicht nach meiner bisherigen Kenntnis anstelle SUMMENPRODUKT() immer SUMME() völlig aus.
Dazu hatten wir mE bereits vor längerer Zeit mal diskutiert. Da schrieb ich, dass ich bei dieser Meinung bleibe, solange mir nicht das Gegenteil aufgezeigt werden kann. Momentan ist mir eine gegenteilige Formel nicht bekannt.
Einer Darstellung "spez. Abläufe" sollten mE trotzdem Alternativen mit gleichem Ergebnis gegenübergestellt werden können, damit man deren Nutzeffekt besser beurteilen kann.
Zu c) Du hattest eingangs hierfür angegeben: 49:=SUMMENPRODUKT(MTRANS(A11:A14)*C11:D14) Endweder ist das von Dir angebene Ergebnis 49 falsch oder die Formel eine andere. Oder?
Zu f) Hier würde mich schon interessieren, wie Deine analoge Formel für eine "horizonale" Ergebnisausgabe ausähe. Und ergänzend zu meinen Ausagen hierzu unter 3. kann das Formelergebnis Deiner Formel nur über die Ergebniszellen weiter ausgewertet werden. Im Gegensatz dazu kann man z.B. auf Basis meines alternativen Formelvorschlages diese sofort auswerten, Z.B. als Summe:
784: =SUMMENPRODUKT((A11:A14)*SUMME($C$11:$D$14))
zu i) dazu siehe meine obigen Aussagen.
Gruß Werner
.. , - ...
Anzeige
AW darauf (ohne Deine v.mir vergessene Frage) ...
16.05.2018 19:52:10
Luc:-?
Hallo, Werner;
zu 3.: Deine AW ist idR dann richtig, wenn die Fml auch entsprd (einfach) konstruiert wurde, nicht aber, falls eine sehr komplexe Fml als Argument übergeben wdn muss u/o SUMMENPRODUKT evtl auch noch klassisch benutzt wird (mehrere Argumente statt nur einem, das die ProdukteBildung vornimmt, also nur noch die Summation verbleibt). Schon die Benutzung bestimmter Xl-Fktt (geschweige denn UDFs) im Argument kann dazu führen. Sowohl SUMME als auch SUMMENPRODUKT sind wie die meisten Xl-Fktt darauf ausgelegt, auch mit ZellBereichen arbeiten zu können. Das gilt allerdings nicht für Datenfelder aus Ausdrücken, also TeilFmln als Argument. Für SUMME generell nicht und für SUMMENPRODUKT bedingt wie folgende BspFmln zeigen …
Datenquellen: A1:B2:={1.2;4.5} und K1:L2:={7.8;9.10}
Formeln:

12:= SUMME(A1:B2)		                109:= {=SUMME(A1:B2*K1:L2)}
12:= {=SUMME(--A1:B2)}		                109:= {=SUMME(-A1:B2*-K1:L2)}
12:= {=SUMME(MTRANS(A1:B2))}	                107:= {=SUMME(MTRANS(A1:B2)*K1:L2)}
109:= SUMMENPRODUKT(A1:B2;K1:L2)		109:= SUMMENPRODUKT(A1:B2*K1:L2)
109:= SUMMENPRODUKT(--A1:B2;--K1:L2)		109:= SUMMENPRODUKT(-A1:B2*-K1:L2)
107:= {=SUMMENPRODUKT(MTRANS(A1:B2);K1:L2)}	107:= {=SUMMENPRODUKT(MTRANS(A1:B2)*K1:L2)}
Wie man hier sehen kann, benötigt SUMME schon bei einem trivial erzeugten Datenfeld MatrixFml-Form, um es überhpt verarbeiten zu können, von etwas komplizierteren ganz zu schweigen (sonst immer #WERT!). SUMMENPRODUKT ist etwas datenfeld-toleranter, benö­tigt aber bei MTRANS-erzeugtem Datenfeld sowohl bei klassischer als auch irregulärer Anwendung MatrixFml-Form (denn das ist eine Mitteilung an Xl, also den FmlText-Interpreter, wie mit mehreren Werten zu verfahren ist).
Man kann speziellen Fmln und den dadurch sichtbar werdenden Abläufen durchaus Alternativen entgegen­stellen, nur wdn dann diese Abläufe, die ggf in anderem Zusammenhang sinnvoll genutzt wdn könnten, nicht sichtbar. Eine generelle Ablehnung solcher Unter­su­chun­gen (wie ich sie hier von anderer Seite schon erfahren musste) wäre also als kontraproduktiv (und natürlich unwis­sen­schaft­lich) einzuschätzen.
Und was MatrixFml-Form-Vermeidung und Einzelwerte (aus berechneten Datenfeldern) anstelle der 1maligen Rückgabe des ganzen Datenfelds betrifft, beschäftigt sich ein ganzer Mathematik-Zweig seit Jhdten mit Vektoren und Matrizen (allgem Tensoren) zum Zwecke der nahezu gleichzeitigen Ermittlung mehrerer Daten, was der IT unserer Zeit erlaubt, schnelle Berechnungen und effiziente Spei­che­rungs­verfahren zu entwickeln. Dass Xl das nicht ebenso effizient weiterreicht, ist eine andere Frage. Für VBA gilt Ähnliches, denn diese Pgmmiersprache (PL) bewegt sich am unteren Rand komplexer PLs. Andere PLs verfügen bspw über spezielle Operatoren für Matrizen­Berechnungen, die dann von ihren Compilern in entsprd Pgm­Schritte übersetzt wdn. Leider gibt's dabei keine verbindliche (inter­na­tio­nale) Normung, zumal die auch die Mathematik nicht hat.
Zu c): Nein, ich hatte mit dieser Fml gerechnet und das Ergebnis 49 erhalten. Hattest Du die Leertexte in den Quelldaten gelöscht…‽
Zu f): Ja, Dein Interesse an horizontaler Auswertung war mir untergegangen, aber falls Du nur die Umkehrung des Feldes meinen solltest, kann man das idR durch Umkehrung der Berechnung erhalten, aber das hätte dann mitunter nicht die gleiche Bedeutung bzw adäquaten Nutzen. Aber ich sehe mir das nochmal an.
Deine weitere Bemerkung ist richtig. Sobald man so etwas in einer einzigen Fml in nur einer Zelle verwenden wollte, würde es nicht mehr fktionieren, was auch logisch ist, denn INDEX ist in dieser Form von der Argumente-Variation durch den FmlText-Interpreter abhän­gig. Es ist also gerade auch ein Effekt, der im virtuellen Rechenraum entsteht und nur in dieser Form abgebildet wdn kann. Das Interessante besteht ja auch darin, dass Xl-Fktt in der gezeigten Form alle Werte verarbeiten und nicht nur die abbildbaren, was mich ursprünglich auch überrascht hatte bis ich herausfand, dass Xl mit nur einem INDEX die Fml auch nur in einem Durchlauf berechnet, mit dem 2.INDEX aber mit einem Durchlauf pro ErgebnisZelle, was dann trotz zufälliger Folge der Durchläufe [Variationsanzahl: n!/(n-k)! → n!] zu richtiger Ergebniswert-Positionierung führt. D.h., Xl kann intern alle Werte indizieren (bzw wiederfinden), INDEX und VBA nicht!
Zu i): Den Grund dafür hatte ich genannt und nach meinen obigen Bspp dürfte der ja nun auch klarer sein. ;-)
Gruß, Luc :-?
Anzeige
Nachtrag:
17.05.2018 00:25:45
Luc:-?
Falls Du zusätzlich Dein INDEX-Konstrukt ins Spiel bringen wolltest, Werner,
nutzt das bei obigen BspFmln nur bei SUMME mit trivialeren Datenfeld-Argumenten etwas:
12:= SUMME(INDEX(--A1:B2;;)) und 109:= SUMME(INDEX(A1:B2*K1:L2;;))
Im Falle von MTRANS-Anwendung ist aber weder bei SUMME noch bei SUMMENPRODUKT (in beiden Fällen!) die MatrixFml-Form ver­zichtbar:
107:= {=SUMME(INDEX(MTRANS(A1:B2)*K1:L2;;))}
107:= {=SUMMENPRODUKT(INDEX(MTRANS(A1:B2);;);K1:L2)}
107:= {=SUMMENPRODUKT(INDEX(MTRANS(A1:B2);;)*K1:L2)}
Abhilfe würde hier meine universellere* alternative UDF Reflect (im Archiv enthalten) brin­gen, die - wie nfolgd angegeben - (formal*) dasselbe macht:
107:= SUMMENPRODUKT(Reflect(A1:B2);K1:L2) bzw 107:= SUMMENPRODUKT(Reflect(A1:B2)*K1:L2)
* In einem Pkt ist allerdings MTRANS universeller — die Xl-Fkt kann (wie manch andere Xl-Fkt auch) bestimmte irreguläre Formen rechteckiger Matrizen in reguläre umwandeln, was ich für die UDF nicht vorgesehen hatte. Aber das nutzt hier offensichtlich nichts, was nur daran liegen kann, dass der FmlText-Interpreter von MTRANS nicht exklusiv erwartet, stets ein Datenfeld zu liefern. Die NutzerMitteilung per MxFml-Form wird/ist folglich erforderlich.
Morrn, Luc :-?
2.Nachtrag: Zusatzfrage zu f)
17.05.2018 02:15:08
Luc:-?
Morrn, Werner;
die AW auf Deine Zusatzfrage zu f) ist in diesem Fall nicht schwer, da es sich ja um einen virtuellen 3Tensor in Form eines Vektors mit Matrizen als Elemente handelt. Die Ausrichtung der Ergebnisse wird dabei von der 1.Matrix bestimmt, wobei hier dann auch egal ist, wie die die Wiederholungen des Durchlaufs (quasi Tensor-„Entfaltung“) veranlassenden Elemente des 4.INDEX-Arguments angeordnet sind. Es könnte hier also für beide Varianten (vertikal und horizontal) gleich lauten (wie im Folgenden):
{49.98.147.490}:{=SUMME(INDEX(INDEX(MTRANS(A11:B14);1;SPALTE(A:D))*INDEX(C11:D14;;;{1.1.1.1});;; {1.1.1.1})) }
Gruß, Luc :-?
AW: und hierfür ...
17.05.2018 12:42:07
neopa
... scheint man ohne MTRANS() in der von angestrebten Lösungsart, nicht zum Ergebnis zu kommen.
Dagegen würde folgende alternative einfache singuläre Formel =INDEX($A11:$A14;SPALTE(A1))*SUMME($C11:$D14) nach rechts kopiert, die gleichen Ergebnisswerte erzeugen.
Deine Formel f) in der von Dir gewollten Lösungsart, läßt sich übrigens wie folgt kürzen:
=SUMME(INDEX(INDEX(A11:B14;ZEILE(A1:A4);1)*INDEX(C11:D14;;;{1;1;1;1;1});;;{1;1;1;1}))
Aber wie auch immer, den Nutzen der von Dir vorgeschlagen Lösungsart, hab ich noch nicht wirklich verstanden.
Gruß Werner
.. , - ...
Vordergründig ging's mir hierbei nicht um ...
17.05.2018 16:09:02
Luc:-?
…irgendeinen besonderen Nutzen dieser Fml, Werner,
sondern mich hatte diese Entdeckung erstaunt, zumal das in anderer Calc-Software nicht so umgesetzt wird. Da ich mit n-dimensionalen Tensoren beschäftigt hatte, die in VBA ja möglich sind (wohl bis zu n=60), hatte mich interessiert, ob und wie Xl mit 3- bzw 4-Tensoren umgehen kann bzw umgeht. Und siehe da, der FmlText-Interpreter berücksichtigt so etwas!
Da nicht nur Du nach dem Nutzen fragst, den so etwas (für den NormalNutzer) haben kann, hatte ich ein eher ökonomisch orientiertes Bsp dafür vorbereitet (HTML-Tab ist bereits fertig), das ich noch betexten muss und dann als neuen Tensor-FortsetzungsBeitrag ein­stel­len werde.
Der IT-Nutzen sollte eigentlich unstrittig sein - immerhin rechnet Xl (und wohl nur Xl!) auch so -, allerdings entzieht sich das Xl-Bsp weitgehend dem Zugriff per VBA, kann aber über Hilfszellen per UDF mit allen Werten dargestellt wdn (das hatte ich in den erwähnten Tensor-Beiträgen dargestellt). Das dahinter steckende Kronecker-Produkt wird also von Xl tatsächlich als (hier 3-, sonst - bei 2 Matrizen -) 4Tensor gebildet, der durch das äußere INDEX-Konstrukt mehrfach wiederholt wird. Der FmlText-Interpreter wiederholt dann die Berechnung entsprd oft, wobei er jeweils die einer bestimmten ZellPosition entsprd Teil-Matrix auswählt. Dadurch ist es anderen Xl-Fktt möglich, eine ihrer Funktion entsprd Aktion mit dieser Teil-Matrix auszuführen. Eine derartige Fktionalität lässt sich mit VBA nicht direkt nachbilden, zumindest habe ich keinen Weg gefunden, aber eine UDF in einer ZellFml kann ebenso wie eine Xl-Fkt von dieser Vor­gehens­weise der Xl-Steuerung in Zusammenwirken mit dem FmlText-Interpreter profitieren. Wollte man allerdings alle Werte des Kro­necker-Produkts mit nur einem Durchlauf per pluraler MatrixFml in einer naturgemäß größeren Matrix abbilden (was mit INDEX nicht möglich ist), müsste man eine spezielle UDF dafür schreiben (was ich ebenfalls getan habe, hier aber nicht relevant ist, da es die Lösung eher erschweren würde). Die würde dann den eigentlichen Nutzeffekt des Ganzen in der IT demonstrieren — anstelle n-dimensionaler Tensoren (bei sehr vielen kombinierbaren Eigenschaften vieler Objekte) mit ggf aufwändiger ZwischenSpeicherung nur mit großen nor­ma­len Matrizen rechnen zu müssen, wenn dabei zwangsläufig auftretende Ungenauigkeiten minimiert wdn können (ich hatte in o.g. Beitragsreihe eine Dissertation verlinkt, die sich damit befasst).
Ja, diese Kürzungsmöglichkeit hatte ich in meinem obigen Beitrag gemeint, Werner… ;-)
Gruß, Luc :-?
AW: kann sein ...
17.05.2018 16:42:33
neopa
Hallo Luc,
... dass die von Dir erkannte Möglichkeit einen IT-Nutzen ergibt. Momentan scheint dieser mir aber nur eher theoretischer Natur zu sein. Oder? Einen praktischen Nutzen für mich für aktuelle Excelauswertungen erkenne ich persönlich aber leider noch immer nicht.
Gruß Werner
.. , - ...
Den können wir diskutieren, wenn mein ...
17.05.2018 18:24:00
Luc:-?
…angekündigter Beitrag - dann dort - erscheint, Werner. ;-)
Luc :-?
AW: genau ...
17.05.2018 12:42:00
neopa
... das eigentliche "Grundproblem" sind Funktionen wie MTRANS(), deren Ergebnisse nur durch zusätzlichen Einsatz in einer Matrixformel ausgewertet werden können. INDEX() kann hier keine Abhilfe bieten.
Gruß Werner
.. , - ...
Ja, genau, ...
17.05.2018 18:20:35
Luc:-?
…aber warum ist das so, Werner,
und in einfacheren Fällen nicht? Das interessiert mich, denn es lässt Rückschlüsse auf die Arbeits­weise des FmlText-Interpreters im Zusammenspiel mit FmlErgebnis- und QuellDaten­Stand­orten zu. Es kann also nicht primär an der MatrixFähigkeit von SUMMENPRODUKT liegen, sondern muss mit der von MTRANS zusammenhängen. Letztere Fkt liefert offensichtlich nur einen Wert, wenn Xl nicht mitgeteilt wird, dass alle Werte verwendet wdn sollen. Dann kann SUMMENPRODUKT auch nicht mehr draus machen, was die Wirkung der Fml-Opti­mierung durch Xl doch arg limitiert.
Übrigens kann wohl auch festgestellt wdn, dass jede 1zellig-1wertige MxFml idR auch als duale und plurale MxFml fktioniert (lauter gleiche Ergebniswerte), aber das ist trivial und einem Xl-Mechanismus geschuldet, der Einzelwerte per MatrixMitteilung über die gesamte Auswahl inflationiert.
Luc :-?
tauscht Euch per Email aus
17.05.2018 18:36:46
WF
Die Email-Benachrichtigungen kann man ja nur generell und nicht beitragsbezogen abschalten.
Dieser Dialog (ohne Bezug zur Ursprungsfrage) sind bis jetzt 15 Teile.
WF
Da hast Du zwar recht, ...
17.05.2018 23:05:57
Luc:-?
…Walter,
und normalerweise vermeide ich so etwas auch bei eMail-Benachrichtigung, aber so weit sollte das eigentlich nicht gehen und einen habe ich noch (zu erledigen)… ;-]
Gruß, Luc :-?
PS: Könnte ja auch, wenn schon nicht Dein, so doch das Interesse anderer finden. Letztlich hatte mich ja auch Dein Disput mit Werner dazu veranlasst, der ebenfalls keine Rücksicht auf eMail-Benachrichtigung nahm…
AW: Keiner bedarf der E-Mail-Benachrichtigung ...
18.05.2018 10:54:50
neopa
Hallo WF,
... zumindest dann nicht, wenn man nicht ganz neu im Forum ist.
Jedem kann man nur empfehlen, diese E-Mail-Benachtigung abzuschalten. Mit der von Hans Herber bereitgestellten Forums-Funktionalität: Listensuche und der dortigen Eingabe eines (auch eines beliebigen) USER-Namen, bekommt man sehr schnell nur die threads gelistet, wo der User mit dem angegeben Suchnamen einen Beitrag eingestellt hat bzw. wo dieser in der Betreffzeile aufgeführt ist.
Somit hat mal als derartiger Nutzer des Forums die völlige Transparenz und die freie Entscheidung, was man davon lesen möchte oder nicht und kann sich auch nicht belästigt fühlen.
Gruß Werner
.. , - ...
mach ich sicher nicht
18.05.2018 11:30:07
WF
Hi,
dann müsste ich ja in einer ? Frequenz diese Listensuche aufrufen und dann die ganze Liste durchforsten, ob sich irgendwo etwas getan hat.
Bei der Email-Benachrichtigung weiß ich, dass sich was getan hat - und wo.
WF
AW: offensichtlich wohl nur deshalb ...
19.05.2018 13:12:37
neopa
Hallo WF,
... weil Du die vorhandenen Möglichkeiten der Forumssoftware noch nicht wirklich kennst bzw. nicht getestet hast. Dies muß ich so Deiner Antwort entnehmen.
Du kannst doch in Deinem Browser ein weiteren Tab mit aktivierten https://www.herber.de/forum/ anlegen. Dort schreibe in das Forums-Optionsfeld "Listensuche: " Dein Usernamen also "WF" ein und betätige Enter. Nun wird Dir eine gefilterte Ansicht der Herbers-Forumliste mit nur noch den threads dargestellt, die Beiträge von Dir beinhalten. Musst in diesem Tab zwar lediglich ab und zu mal mit [F5] die Liste aktualisieren, um zu sehen, ob es in den threads mit Beiträgen von Dir neue Beiträge gibt. Diese sind auch da durch die geänderte Schriftfarbe kenntlich.
Das ist garantiert weniger auwendig, schneller informativ und vor allem auch weniger lästig als E-Mail-Benachrichtigungen und die Entscheidung ob Du diese liest oder nicht ist Dir auch freigestellt.
Im ersten Tab kannst Du Deine normale Forumsansicht belassen und so den Überblick über alle threads / beiträge behalten.
Gruß Werner
.. , - ...
viel zu umständlich
19.05.2018 14:44:02
WF
Hi,
das, was Du da schreibst, ist mir geläufig.
Da muss ich aber selbst aktiv werden.
Die Email-Benachrichtigung erhalte ich automatisch - auch, wenn Herber nicht aufgerufen ist; bzw. ich finde sie vor, wenn ich den Rechner am nächsten Tag starte.
WF
Nun ja, bei AWer-Benachrichtigung magst Du recht …
19.05.2018 20:57:12
Luc:-?
…haben, Walter,
aber bei Frager-Benachrichtigung könnte die ggw Regelung im Forum nach der neuen DSGVO noch problematisch wdn (ggf auch die AWer-Benachrichtigung)…
Gruß & FroPf, Luc :-?
AW: ... sehe ich so ...
20.05.2018 14:06:39
neopa
Hallo WF,
... Erstens werden in meinem Browser die letzten Tabeinstellung nach jedem PC-Neustart genau so wie zuletzt eingestellt, wieder aktualisiert bereitgestellt. Und zweitens muss ich diesbzgl. nur "aktiv" werden, wenn ich es auch will. Im letzteren Fall reicht ein einfaches Betätigen der F5-Taste.
Wenn ich mir E-Mail-Benachrichtigungen zusenden lassen würde, müsste ich viel "aktiver" werden. Dies allein nur deshalb, um diese Mails alle wieder zu löschen.
Natürlich kannst Du Deine gewählte Art und Weise beibehalten, ist ja Deine freie Entscheidung.
Aber mE kann man nicht gleichzeitig das Eine (E-Mail-Benachrichtigungen) beibehalten und das Andere (durch E-Mail-Benachrichtigungen sich nicht "belästig" zu fühlen) wollen.
Gruß Werner
.. , - ...
AW: hierzu ...
17.05.2018 12:41:54
neopa
Hallo Luc,
... Deine neue Beispielformeln allein überzeugen mich noch nicht, denn die beiden unteren Formeln benötigen nicht zwingend SUMMENPRODUKT(). Diese lassen sich schlicht durch {=SUMME(MTRANS(A1:B2)*K1:L2)} ersetzen. Auch Dein Hinweis auf eine eine komplexere Formel ist mE unzureichend.
Allerdings Dein Hinweis auf evtl. Notwendigkeit der klassische Anwendungsform von SUMMENPRODUKT() in derartigen Auswertungen, kann eine Matrixformeleinsatz für SUMMENPRODUKT() begründen. Also wenn in Deinem neuen Datenbeiepiel z.B. ein oder mehre Datenwerte kein Zahlenwert sind. Derartiges sollte man mE zwar vermeiden, was ja auch fast immer realisierbar ist. Nur wenn die Vermeidung derartigem nicht oberste Priorität haben sollte würde ich SUMMENPRODZKT() in einer Matrixformel einsetzen.
zu c) also ich kann Dein Ergebnis nicht nachvollziehen. Bei mir ergibt sich in XL 2010 als Ergebnis #WERT! was für mich auch logisch ist, denn die Formel: =SUMMENPRODUKT(MTRANS(A11:A14)*C11:D14) in der ersten Stufe "aufgelöst" stellt sich wie folgt dar: =SUMMENPRODUKT({1.2.3.10}*{4.5;6.7;8.9;0.10}) und diese dann weiter "aufgelöst" so: =SUMMENPRODUKT({4.10.#NV.#NV;6.14.#NV.#NV;8.18.#NV.#NV;0.20.#NV.#NV}) was zwangsläufig im Endergebnis zu einer Fehlermeldung führen muss. Und wie stellt sich da bei Dir dar?
Gruß Werner
.. , - ...
AW: Dazu Folgendes, ...
17.05.2018 23:24:09
Luc:-?
…Werner:
1) Ersetzbarkeit einer Fml durch eine andere ist kein GgArgument! ;-]
2) Du hast recht, denn ich hatte eines nicht beachtet — hier kommt ebenfalls die Argumente-Variation durch die Xl-Steuerung zum Zug. Die hier nicht benötigte MxFml-Form hätte mich stutzig machen müssen. Setzt Du die Fml in die gleiche Zeile wie einen der Werte des aus der 1.Matrix isolierten Vektors, ergeben sich nacheinander die Werte, die auch Fml f) liefert.
Wie ich feststellen konnte, ist diese Art der Argumente-Variation ebenfalls ein Alleinstellungs­Merkmal von Xl, denn in LO/OOcalc kommt dabei immer nur der gleiche Wert heraus → 80! Und dabei ist auch völlig egal, ob als normale oder MatrixFml gekennzeichnet wurde. LO/OOcalc verwendet die überzähligen Werte einfacht nicht. Damit dürfte eine Portierbarkeit (vgl Lupo!) zwischen unterschiedlicher Calc-Software, zumindest für MatrixBerechnungen endgültig obsolet geworden und ins Reich „frommer Wünsche“ verbannt worden sein…
Morrn, Luc :-?
AW: wenn Schlüssel mehrfach vorkommen sollten ...
14.05.2018 16:12:27
neopa
Hallo Nils,
... d.h. z.B. "BDD" (anstelle nur "BD") dann würde ich folgende alternative Formel (zu der von Boris) vorschlagen:
=SUMME(INDEX((LÄNGE(B2)-LÄNGE(WECHSELN(B2;Legende!A$2:A$9;"")))*Legende!C$2:C$9;))
Gruß Werner
.. , - ...

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige