Excelで配列・動的配列を指定回数だけ繰り返し表示する方法
Excelの IFERROR 関数と EXPAND関数を組み合わせて、配列や動的配列を指定された回数だけ繰り返し表示する方法について解説します。
繰り返すのが配列ではなく単一のセルや値の場合はEXPAND関数単独でセット可能です。そのやり方は下記のページを参照してください。
この記事では、IFERROR 関数と EXPAND関数を組み合わせた計算式の構造と役割を詳しく説明し、実際の例を使って解説します。
使用する関数
今回使用する関数は以下の通りです。
- EXPAND関数: 指定した次元に配列を展開します。
- IFERROR 関数: 計算がエラーになった場合に指定した値を返します。
計算式の構造
=IFERROR(EXPAND(配列, 配列の高さ, 複製回数), 配列)
本来ならばEXPAND関数の第4引数では拡張部分の値を指定できます(未指定ならばN/Aを返す)。しかしそこへは配列を登録できません。代替手段としてIFERROR関数で囲みます。
各引数の意味は以下の通りです。
- 配列: 展開する配列。ここでは、スピル範囲(例:B2#)や一般の範囲(例:B2:B6)、動的配列数式(例:SEQUENCE(5)&”月号”)を指定できます。
- 配列の高さ: 展開後の行数。ここでは、配列の行数を指定します。
- 複製回数: 展開後の列数。ここでは、繰り返し回数を指定します。
具体的な使用例
例えば、以下のデータを基に考えてみます:
回数 | 元データ |
---|---|
4 | 1月号 |
2月号 | |
3月号 | |
4月号 | |
5月号 |
設定方法
まず、セルB2に以下の動的配列数式を入力します。すると上の表のように「1月号~5月号」が作成されます。
=SEQUENCE(5)&"月号"
次に、セルA2に複製回数「4」を入力します。
最後に、セルC2に以下の計算式を入力します。「#」はスピル範囲演算子で、B2の式で使われる範囲全体を意味します。
=IFERROR(EXPAND(B2#, 5, A2), B2#)
この設定により、C2からF6まで以下のようなスピル配列が生成されます。
なお、「#B2」の代わりに「B2:B6」や「SEQUENCE(5)&”月号”」をセットしても同じ効果が生まれます。
また、配列の高さに「5」と入力していますが、ROWS関数を用いて、以下のようにB2のスピル配列の高さを登録するほうがより柔軟でしょう。
ROWS(B2#)
以上が
=IFERROR(EXPAND(配列, 配列の高さ, 複製回数), 配列)
の式の解説となります。
活用・TOCOL関数やTOCOL関数で読み込む
C2のスピル配列を縦並びにするTOCOL関数で読み込んでみましょう。第三引数に「TRUE」を指定すれば縦型スキャンになります。
=TOCOL(C2#,,TRUE)
結果は下図のようになります。スピル範囲であるC2:F6が読み込まれて縦並びに表示されます。横並びにするならばTOROW関数を用います。
コメント