Kurze Antwort
=ArrayFormula(vlookup(ROW(1:10),{IF(LEN(A1:A10)>0,ROW(1:10),""),A1:A10},2))
Erläuterung
Angenommen, die Eingabedaten in der Column A
folgenden Tabelle befinden sich in der Zelle B1
.
Hinweis: Um die Auswertung der Formel zu vereinfachen, Column A
wiederholt die (Eingabe) keine Werte, funktioniert jedoch mit allen Arten von Werten (Buchstaben, Zahlen, Symbole, wiederholt, unsortiert usw.).
| A B
=== + ======= =======
1 | a a
2 | a
3 | b b
4 | b
5 | b
6 | c c
7 | d d
8 | e e
9 | e
10 | f f
VLOOKUP
wurde ausgewählt, da es verwendet werden kann, um ungefähre Werte zu finden, und mehrere Werte (Array) zurückgeben kann.
Da die Eingabewerte in beliebiger Reihenfolge angezeigt werden können, wurde anstelle der tatsächlichen Werte die Zeilennummer für nicht leere Zellen verwendet, und leere Zellen haben eine leere Zeichenfolge zugewiesen ""
.
Es wurde LEN
anstelle von ISBLANK
Zellen mit Formeln verwendet, die eine leere Zeichenfolge zurückgeben. FALSE
Dies kann in einigen gängigen Szenarien zu Problemen führen.
IF(LEN(A1:A10)>0,ROW(1:10),"")
HINWEIS: Wenn Sie drei Zeichen speichern möchten, kann der zweite Parameter ( ""
das Zeichen ist das Parametertrennzeichen ,
) entfernt werden. Bei der Analyse dieses Teils der Formel werden leere Zellen zurückgegeben FALSE
.
Da VLOOKUP
die Nachschlagespalte die erste Spalte anstelle eines Bereichs sein muss, wurde ein "halb manuell" erstelltes Array verwendet.
{IF(LEN(A1:A10)>0,ROW(1:10),""),A1:A10}
Der obige Ansatz spart uns Zellen und Verarbeitungszeit.
""
des if-Befehls etwas kürzer gemacht werden (weggelassenes Argument ist standardmäßig leer).