INDEX2

Die Funktion INDEX gibt einen Wert oder den Bezug zu einem Wert aus einer Tabelle oder einem Bereich zurück. Sie ist in 2 Versionen vorhanden: Matrix- und Bezugsversion.
Sie lässt sich auch in Matrixformeln (Arrayformeln) verwenden. Das funktioniert auch, wenn sie in einem Namen verwendet wird, der sich auf dem Tabellenblatt wiederum in solch einer Formel wiederfindet.
Wenn man aber möglichst viel von dem, was nicht unbedingt auf dem Tabellenblatt sein muss, via Namen verbannt, wird Namen generieren, die wiederum Namen enthalten. Das mag schon alleine deswegen nötig sein, weil ein Name 255 Zeichen nicht überschreiten kann.
In meinem Fall sollte die INDEX-Funktion eine benutzerdefinierte Funktion mit einer Matrix an Werten füttern, übergab aber immer nur Einzelwerte. Was die Prozedur der Matrixformel verlässlich erledigt, das ist dem Namen selbst fremd, da er ja auch nicht als solche eingegeben werden kann (Eingabe mittels “STRG+UMSCHALT+EINGABE” bzw. “Ctrl-Shift-Enter”). Mehrere Werte, die die Matrixformel-Prozedur nach und nach einzeln übergibt, werden ignoriert und nur der erste davon genommen.

Das führte zur Entwicklung von INDEX2, einer benutzerdefinierten Funktion, die für die Parameter “Zeile” und “Spalte” auch einzeilige oder einspaltige Zellbereiche oder Matrizen annimmt.
INDEX2 verhält sich wie INDEX, mit dem Unterschied, dass bei einem ungültigen Verweis nicht #BEZUG! sondern #NV zurück geliefert wird. Grund dafür ist, dass eine etwaige Abfrage mit ISTFEHLER() oder ISTFEHL() um 4 bzw. 2 Zeichen länger ist als bei ISTNV(), was bei 255 Zeichen relevant sein kann. Überdies ist es in meinen Augen egal, warum kein Wert vorliegt.
Die Test- und Demonstrationsdatei enthält zur Verdeutlichung 2 Tabellenblätter “INDEX2” und “INDEX”, die diesen “kleinen Unterschied” linksseitig zeigen. Rechterseits allerdings zeigen sich die Stärken bei der Verwendung in einem Namen. Die Anzahl der Elemente ist das augenscheinlichste! Und dass der Name für den aufrufenden Bezug passend beschickt wird, darf natürlich erwartet werden: