Spill funktioniert nicht mit WOCHENTAG
#31
Abschließend hier auch nochmal:

Es macht für INDEX einen Unterschied, ob die angesprochene Matrix vertikal oder horizontal ist. Ist sie vertikal (wie im Eingangsbeispiel), liefert INDEX (nur mit dem Parameter Zeile) als Rückgabewert ein Array.
Ist sie aber horizontal, wird ein einzelner Wert (und kein Array) geliefert. Diese Formel funktioniert somit auch ohne @ oder Angabe beider INDEX-Parameter (Zeile und Spalte), da das auszuwertende Array nun horizontal ist:

=LET(x;DATUM(2025;1;SEQUENZ(;31));WT;WOCHENTAG(INDEX(x;1);2);y;ERWEITERN(x;1;SPALTEN(x)+WT;0);MTRANS(y))

Weshalb es da einen Unterschied zwischen horizontal und vertikal gibt, ist noch nicht ganz geklärt.
Antworten Top
#32
Es gibt doch auch ZWEI Index-Versionen:

   
Antworten Top
#33
Hi Onur,

Zitat:Es gibt doch auch ZWEI Index-Versionen:

Das weiß ich, spielt aber imho bei meiner Frage keine Rolle.

Zur Matrix-Variante steht in der Hilfe geschrieben:

Zitat:
    • Wenn Matrix nur eine Zeile oder Spalte enthält, ist das entsprechende Argument row_num oder column_num optional.

Und das stimmt einfach nicht. Es macht einen Unterschied, ob die Matrix horizontal oder vertikal vorliegt:

Horizontal wird ein einzelner Wert geliefert, vertikal aber ein Array. Vertikal verlangt damit also beide Parameter (Zeile UND Spalte), um einen einzelnen Wert (und kein Array) zu liefern - für horizontal reicht ein Parameter.

Und genau das erschließt sich mir nicht.
Antworten Top
#34
Normalerweise müsste
=LET(x;SEQUENZ(;5);INDEX(x;3))
auch einen Fehler ergeben wie bei
=LET(x;SEQUENZ(5);INDEX(x;;3))
, (denn es gibt keine Zeile 3 bei einem Matrix 1x5), aber es kommt die Zahl 3 dabei heraus.

   
Antworten Top
#35
Hi Onur,


Zitat:denn es gibt keine Zeile 3 bei einem Matrix 1x5

Der Parameter Zeile ODER Spalte ist ja auch optional. Ist die (eindimensionale) Matrix vertikal und es wird nur 1 Parameter angegeben, dann ist er ZEILE.
Ist die Matrix horizontal und es wird nur 1 Parameter angegeben, dann ist er SPALTE.
So sollte es zumindest nach meinem Verständnis sein.

In VBA nutzt man dafür If IsMissing....
Aber das brauche ich Dir ja nicht zu erzählen.
Antworten Top
#36
Optional heisst aber für mich, dass da NIX statt einer Zahl hinkommt.
=INDEX(x;;3)
Wenn da aber steht
=INDEX(x;3)
wurde (für mich) die Zeile eingegeben und Spalte weggelassen.
Nur bei ZEILENWAHL bzw SPALTENWAHL ist es egal, da der zweite Parameter automatich die Zeilen- bzw Spalten.Nr ist.

Wenn du z.B. 4 optionale Parameter hättest und nur den vierten mitgeben wolltest, müsstest du ja auch
(x;;;;3)
eingeben und nicht einfach
(x;3)
ODER ?
Antworten Top
#37
Zitat:Optional heisst aber für mich, dass da NIX statt einer Zahl hinkommt.

Nein.

Mit ;;; gibst Du ja die Parameter mit an.

Typisches Beispiel SVERWEIS:

=SVERWEIS(A1;B:D;3)
oder
=SVERWEIS(A1;B:D;3;)

ist ja ein riesen Unterschied, weil der optionale Parameter Bereich_Verweis einmal nicht angegeben ist und einmal eben doch durch das ;

Nachtrag: Bei Bereichen (statt Arrays) ist es ja auch egal:

=INDEX(A1:A5;1) oder =INDEX(A1:E1;1) - in beiden Fällen wird kein Array sondern ein einzelner Wert geliefert.
Antworten Top
#38
Wenn du doch bei Formeln die LETZTEN Parameter weglässt, lässt du auch die Semikolons weg - DAS versteht Excel.
Das gilt aber NUR für die Letzten (nach dem letzten tatsächlich eingegebenem Parameter).
Wenn du als letzten Parameter die  Zahl 4 bei XVERWEIS hättest, würdest du eingeben müssen:
=XVERWEIS(Z7S1;Z7S1:Z22S1;Z7S1:Z22S1;;4)
Denn bei
=XVERWEIS(Z7S1;Z7S1:Z22S1;Z7S1:Z22S1;4)
würde die 4 automatisch als VIERTER Parameter zugewiesen und nicht - wie nach deiner Aussage - als fünfter..
Wie bei Dezimalzahlen
Geht:
1,1 statt 1,10000000
Geht nicht:
1,1 statt 1,000001
Antworten Top
#39
Ich zitiere nochmal aus der Hilfe:

Zitat:
  • Wenn Matrix nur eine Zeile oder Spalte enthält, ist das entsprechende Argument row_num oder column_num optional.

Und bei =INDEX({3;4;5;6};1) ist es doch das Selbe wie bei dem SVERWEIS. Trotzdem wird ein Array geliefert.
Antworten Top
#40
Ich schrieb doch bereits:
"Normalerweise müsste
=LET(x;SEQUENZ(;5);INDEX(x;3))
auch einen Fehler ergeben "
DAS ist der eigentliche Bug, dass da überhaupt ein Ergebnis kommt.

Guck mal, was bei
=INDEX({3;4;5;6};;1)
herauskommt.
oder bei
=INDEX({3;4;5;6};;2)

" Wenn Matrix nur eine Zeile oder Spalte enthält, ist das entsprechende Argument row_num oder column_num optional. "
Optional bedeutet nicht, dass die 2 Angabe automatisch zum dritten Parameter wird bzw die 3 Angabe zum zweiten Parameter. Optional heisst, du kannst den Wert weglassen, aber nicht die Semikolons dazu (ausser bei den LETZTEN). Die Semikolons sind sozusagen die Adressen der Parameter, damit Excel weiss, ob es der zweite, der dritte usw usw ist.
Wenn du die Formel über den "Formeleditor" eingibst (ich weiss nicht, ob das Ding tatsächlich so heisst - siehe Bild), kannst du ja auch nicht einfach bei Zeile die Spalte eingeben oder umgekehrt. Der ZWEITE  Paramater ist nun mal die Zeile, und optional bedeutet, wenn du da nix einträgst, siehst du nur den "leeren" Semikolon in der Formel.

   
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste