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.