Registriert seit: 04.11.2014
Version(en): Office 365 Beta
Hallo zusammen,
es lässt mir keine Ruhe.
=INDEX({3;4;5;6};1) liefert als Rückgabewert das Array ={3}
=INDEX({3.4.5.6};1) liefert kein Array sondern den einzelnen Wert =3
Das kann doch kein Feature sein?
Bitte um Eure geschätzte Meinung.
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
21.01.2025, 20:44
(Dieser Beitrag wurde zuletzt bearbeitet: 21.01.2025, 20:57 von Kuwer.)
Hi Boris, (21.01.2025, 19:56){Boris} schrieb: =INDEX({3.4.5.6};1) liefert kein Array sondern den einzelnen Wert =3 korrekt wäre da ja =INDEX({3.4.5.6};;1) Gruß, Uwe
oder anders rum: Bei vollständiger(horizonaler und vertikaler) Angabe der Position ergibt es keine Matrix.
Registriert seit: 13.04.2014
Version(en): 365
Hi,
wie schon die ganze Zeit:
mit ; erzeugst Du ein vertikales Array, mit . ein Horizontales. Ist schon ein alter Hut:
SUMMENPRODUKT(ZEILE(A1:A5)*{1;2;3;4}) erzeugt #NV, weil zwei unterschiedlich große Arrays vorliegen SUMMENPRODUKT(ZEILE(A1:A5)*{1.2.3.4}) ergibt ein Ergebnis, weil (in diesem Fall) eine 5 x 4 Matrix erzeugt wird und jeder Zeilenwert mit jedem Spaltenwert multipliziert wird.
Das, was Anton schon ausführlich erläutert hat. Aus dem horizontalen Array erhältst Du einen Wert, aus dem Vertikalen nur ein Array, was z.B. in Deiner vorherigen Formel nicht zum schon vorhandenen passt.
=INDEX({3;4;5;6};1;1) liefert wieder die Zahl 3, nämlich aus der einspaltigen Matrix den Wert aus Zeile 1.
Funktioniert: =LET(x;DATUM(2025;1;SEQUENZ(31));WT;INDEX({3;4;5;6};1;1);y;ERWEITERN(x;ZEILEN(x)+WT;1;0);y) =LET(x;DATUM(2025;1;SEQUENZ(31));WT;INDEX({3.4.5.6};1);y;ERWEITERN(x;ZEILEN(x)+WT;1;0);y) =LET(x;DATUM(2025;1;SEQUENZ(31));WT;INDEX({3;4;5;6};1);y;ERWEITERN(x;ZEILEN(x)+@WT;1;0);y) =LET(x;DATUM(2025;1;SEQUENZ(31));WT;INDEX({3;4;5;6};1;1);y;ERWEITERN(x;ZEILEN(x)+WT;1;0);y)
Ich kann es nicht so gut erklären wie Anton oder Onur, aber so ist es für mich logisch.
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr! Über Rückmeldungen würde ich mich freuen.
Registriert seit: 04.11.2014
Version(en): Office 365 Beta
Hi Edgar, hi Uwe, Zitat:mit ; erzeugst Du ein vertikales Array, mit . ein Horizontales. Ist schon ein alter Hut: Das weiß ich natürlich - daher auch mein Betreff. Zitat:korrekt wäre da ja =INDEX({3.4.5.6};;1) Nein, denn mit einem Nullparameter für Zeile oder Spalte erzeuge ich auf jeden Fall ein Array. Deine Formel liefert auch ={3} Nochmal ganz kurz: Für ein eindimensionales horizontales Array liefert =INDEX({3.4.5.6};1) den einzelnen Wert =3 und nicht ein Array (={3}) Für ein eindimensionales vertikales Array liefert =INDEX({3;4;5;6};1) aber ein Array ={3} und keinen einzelnen Wert (=3) Und dieses unterschiedliche Verhalten bei den beiden Arrayausrichtungen (horizontal/vertikal) will mir nicht in den Kopf. Aus der Hilfe: Zitat:- Wenn Matrix nur eine Zeile oder Spalte enthält, ist das entsprechende Argument row_num oder column_num optional.
Demnach müsste es egal sein, ob ich =INDEX({3;4;5;6};1) oder =INDEX({3;4;5;6};1;1) schreibe - ist es aber nicht. Mit einem Zellbezug anstatt einer Arraykonstanten funktioniert es hingegen wie erwartet: =INDEX(A1:A4;1) liefert den einzelnen Wert aus A1 und kein Array. Für mich bleibt es immer noch fragwürdig. Aber lassen wir das jetzt. Ich danke Euch für Eure Antworten!
Registriert seit: 08.05.2014
Version(en): Office 2010, Office 365, Office 365 Betakanal
22.01.2025, 12:47
(Dieser Beitrag wurde zuletzt bearbeitet: 22.01.2025, 12:47 von maninweb.)
Hallo Boris, ich würde annehmen, das hat mit der Kompatibilität zu früheren Versionen zu tun. Denn sonst hätte MS ja für alle früheren Versionen ein Update machen müssen. Im Bild, wie das im XML-Code aussieht, wenn ich mal INDEX mit und ohne zweites Argument in Excel 2010 und Excel 365 verwende. Ab Excel 365 scheint es so, dass alles erstmal ein Array ist. Somit erscheint es wohl sinnvoll, ab Excel 365 generell auf optionale Argumente zu verzichten, sofern man bspw. explizit den Wert ansprechen möchte. Oder eben halt den Operator @ verwenden.
Möglich, dass das für horizontale Arrays auch gilt. Habe ich mir aber allerdings nicht angeschaut bzw. geprüft. Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) :: 2011-2019 & 2020-2022 :: 10 Awardshttps://de.excel-translator.de/translator :: Online Excel-Formel-Übersetzer :: Funktionen :: Fehlerwerte :: Argumente :: Tabellenbezeichner
Registriert seit: 04.11.2014
Version(en): Office 365 Beta
Hi Mourad, Zitat:ich würde annehmen, das hat mit der Kompatibilität zu früheren Versionen zu tun. Damit kommen wir der Sache womöglich näher. Zitat:Möglich, dass das für horizontale Arrays auch gilt. Habe ich mir aber allerdings nicht angeschaut bzw. geprüft. Nach meinen Beobachtungen gilt das halt nicht für horizontale Arrays, denn dort wird auch in der aktuellen Version ein einzelner Wert (und kein Array) geliefert, was ich auch für logisch erachte. Bleibt am Ende noch die Unterscheidung bei den vertikalen Arrays zwischen Matrix und Bezug, denn mit einem Bezug liefert =INDEX(vertikaler_Bezug;1) einen einzelnen Wert und kein Array, während =INDEX(vertikale_Matrix;1) ein Array zurückgibt.
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
23.01.2025, 02:28
(Dieser Beitrag wurde zuletzt bearbeitet: 23.01.2025, 02:28 von Kuwer.)
Hi Boris, (22.01.2025, 12:23){Boris} schrieb: Nein, denn mit einem Nullparameter für Zeile oder Spalte erzeuge ich auf jeden Fall ein Array. Deine Formel liefert auch ={3} genau, das wollte ich damit auch sagen. Dass bei der Spaltenversion nur mit dem Zeilenparameter ein Wert und kein Array erzeugt wird, finde ich bugy. Gruß, Uwe
Registriert seit: 04.11.2014
Version(en): Office 365 Beta
23.01.2025, 14:51
(Dieser Beitrag wurde zuletzt bearbeitet: 23.01.2025, 14:53 von {Boris}.)
Hi Uwe, Zitat:Dass bei der Spaltenversion nur mit dem Zeilenparameter ein Wert und kein Array erzeugt wird, finde ich bugy. Ja, irgendwas ist hier halt "unlogisch". Ich persönlich sehe es nur "andersherum" (hatte das im anderen Thread schon mal so geschrieben): INDEX "sagt": Gib mir eine Matrix. Ist sie zweidimensional, brauche ich beide Parameter (Zeile und Spalte). Ist sie eindimensional, reicht mir ein Parameter (Zeile oder Spalte). Ich kann dann selbst zuordnen, ob es sich um Zeile oder Spalte handelt. Das ist zumindest meine Erwartungshaltung, die auch zutrifft, wenn es sich um eindimensionale Bezüge (und keine Arrays) handelt. Der Klassiker ist ja INDEX in Kombination mit VERGLEICH. Niemand gibt bei eindimensionalen Bezügen beide Parameter (Zeile und Spalte) an: =INDEX(A:A;VERGLEICH(Suchkriterum;B:B;0)) bzw. =INDEX(1:1;VERGLEICH(Suchkriterium;2:2;0)) In beiden Fällen wird ein einzelner Wert (und kein Array) geliefert. Aber halt nur bei Bezügen (und nicht bei Arrays - bzw. nur bei einem horizontalen Array).
Registriert seit: 04.11.2014
Version(en): Office 365 Beta
Für Interessierte hier die finale Antwort von MS:
Index has different logic when dealing with horizontal and vertical array constants, but I have not found relevant documentation to explain this.
Akzeptiert, aber nicht final geklärt.
Thema für mich damit erledigt.
Registriert seit: 04.04.2017
Version(en): Excel365
Microsoft sagt: " but I have not found relevant documentation to explain this " ? Ernsthaft? Das ist doch irgendwie ein Armutszeugnis - oder?
|