5

INDEX()内で数式を使用しようとしていますARRAYFORMULA()。column に4 つの要素がある単純な (無意味な) 例として、A次の配列数式を入力すると、 columnB1の 4 つの要素がすべて表示されると予想しました。AB

=ARRAYFORMULA(INDEX($A$1:$A$4,ROW($A$1:$A$4)))

ただし、これは でB1見つかった値でフィールドを埋めるだけA1です。

入ると

=ARRAYFORMULA(ROW($A$1:$A$4))

ではB1、1 から 4 までのすべての数字が列 に表示されますB。最初の配列数式が 2 番目の配列数式のように展開されないのはなぜですか?

4

3 に答える 3

9

INDEX 関数は、配列がその引数の 1 つとして使用される場合、配列に対する「反復」をサポートしない関数です。私が知っているこれに関するドキュメントはありません。それは単にそれが何であるかです。したがって、2 番目の引数は、常に配列の最初の要素である ROW(A1) にデフォルト設定されます。

必要なものを達成するための不器用な回避策の 1 つは、ソース データの隣に存在する 2 番目の隣接する列に依存しています* (ただし、その 2 番目の列に実際にどのような値があるかは重要ではありません)。

=ArrayFormula(HLOOKUP(IF(ROW($A$1:$A$4);$A$1);$A$1:$B$4;ROW($A$1:$A$4);0))

または実際に次のようなもの:

=ArrayFormula(HLOOKUP(IF({3;2;4;1};$A$1);$A$1:$B$4;{3;2;4;1};0))


編集 2015-06-09

* これは、スプレッドシートの最新バージョンでは必須ではなくなりました。HLOOKUP の 2 番目の引数は、$A$1:$A$4 にすることができます。

于 2013-04-22T06:49:24.887 に答える