Sverweis ganze Zeile ausgeben

Hallo allerseits,
ist es möglich mit SVERWEIS eine ganze Zeile auszugeben?

In Tabelle 1, Spalte A stehen Namen, ab Spalten B Werte einer Zeitreihe. Jetzt möchte ich in Tabelle 2, Zelle A1 einen Namen eingeben und ab der Zellen B1 die Werte der Zeitreihe ausgegeben bekommen ohne SVERWEIS in jede einzelne Zelle der Zeile 1 in Tabelle 2 zu kopieren und den Index anzupassen.

Den Index manuell anpassen brauchst Du eigentlich nicht, da Dir COLUMN() / Deutsch: SPALTE() (ohne ein Argument) immer eine Zahl liefert, die der aktuellen Spaltennummer, in der die Formel steht, entspricht. Wenn es dann nun noch einen Versatz gibt, kann man den mit Addition des Versatzes korrigieren. Damit sieht dann die Formel in allen Spalten gleich aus und kann einfach “nach rechts” kopiert werden. Also =VLOOKUP($A1;$Sheet1.$A$1:$AMJ$1048576;COLUMN();0) sollte es eigentlich in Deinem Fall als Formel für alle Spalten beginnend mit Spalte B in Tabelle 2 tun…

Hat funktioniert … vielen Dank!

Hallo,

hier eine Lösung für dein eigentliches Problem ohne Verwendung von SVERWEIS() (Annahme hier für das Beispiel: Die Anzahl der (möglichen) Spalten für die Zeitreihen ist 1023)

Formel in B1 von Tabelle2: {=OFFSET($Sheet1.$A$1;MATCH(A1;$Sheet1.A:A;0)-1;1;1;1023)}. Die Eingabe einer Array Formel dieser Art erfolgt so:

  • Tippe =OFFSET($Sheet1.$A$1;MATCH(A1;$Sheet1.A:A;0)-1;1;1;1023)
  • Beende die Eingabe mit STRG+UMSCHALT+ENTER (CTRL+SHIFT+ENTER) anstatt mit ENTER

Siehe auch folgende Beispieldatei: Frage-319167.ods

Anmerkungen

  • Ich verwende grundsätzlich nur englischsprachige Funktionsnamen (OFFSET() ist Deutsch VERSCHIEBUNG() und MATCH() ist Deutsch VERGLEICH()

  • WICHTIG Wie immer bei der Verwendung von Array-Funktionen kann die Dimension des Arrays nachträglich nicht geändert werden. Das heißt für Deinen Fall, dass die Zeitreihe entweder abgeschlossen sein muss oder die maximal mögliche Spalte mit einem Zeichen belegt werden muss (z.B. einem -) damit das Array von vornherein so groß angelegt wird, wie Zeitreihenwerte (=Spalten) vorkommen. Aus diesem Grunde habe ich in der Beispieldatei in die letzte Spalte AMJ (entspricht der Spalte 1024 ) ein --Zeichen gesetzt. Damit wird das Ergebnis-Array 1023 Spalten breit und neu hinzugefügte Werte in neuen Spalten (=neuer Zeitreihenwert) reflektiert sich dynamisch in Tabelle 2.

  • Du könntest auch {=VLOOKUP(A1;Sheet1.A1:AMJ1048576;COLUMN(B1:AMJ1);0)} verwenden. Dabei werden aber nicht belegte Zellen als 0 dargestellt. Das gefällt mir persönlich nicht so gut.

  • Siehe noch meinen Kommentar, der aber eine Lösung “mit Kopieren” ist und sich insofern nicht automatisch an zusätzliche Zeitreihenspalten anpassen kann.

Getestet mit LibreOffice

Version: 7.1.4.2 / LibreOffice Community
Build ID: a529a4fab45b75fefc5b6226684193eb000654f6
CPU threads: 8; OS: Linux 5.3; UI render: default; VCL: kf5
Locale: en-US (en_US.UTF-8); UI: en-US, Calc: threaded

Ich hoffe, das hilft.

Vielen Dank für die ausführliche Erklärung!