【Excel】MAKEARRAY関数でカスタム配列を動的生成する方法

【Excel】MAKEARRAY関数でカスタム配列を動的生成する方法
🛡️ 超解決

Excelで複雑な表を作成する際、手作業でのデータ入力や数式での配列生成に限界を感じていませんか。

特に、行数や列数が変動するような動的な配列を効率的に作りたい場面は多いでしょう。

本記事では、ExcelのMAKEARRAY関数を使って、指定した行数と列数でカスタム配列を動的に生成する方法を解説します。

この関数を使いこなせば、データの前処理や分析が格段に効率化されます。

【要点】MAKEARRAY関数でカスタム配列を生成する

  • MAKEARRAY関数: 指定した行数と列数で、指定した計算結果を格納した配列を生成する。
  • 引数: 行数、列数、そして各セルに格納する値を計算するLAMBDA関数を指定する。
  • LAMBDA関数との連携: LAMBDA関数内で現在の行番号と列番号を利用して、動的な値を配列に格納できる。

ADVERTISEMENT

MAKEARRAY関数の概要と基本構文

MAKEARRAY関数は、Microsoft 365のExcelで利用できる、配列を生成するための強力な関数です。

この関数を使うと、指定した行数と列数を持つ配列を作成し、各要素に任意の値を格納できます。

特に、他の関数と組み合わせて、条件に応じた値を持つ配列を動的に生成したい場合に非常に役立ちます。

MAKEARRAY関数の構文は以下の通りです。

MAKEARRAY(rows, columns, name, lambda)

各引数の意味は以下の通りです。

  • rows: 作成する配列の行数を指定します。正の整数で指定します。
  • columns: 作成する配列の列数を指定します。正の整数で指定します。
  • name: LAMBDA関数内で使用する引数名を指定します。一般的には、行番号を表す名前(例: `row_num`)と列番号を表す名前(例: `col_num`)を設定します。
  • lambda: 各配列要素の値を計算するためのLAMBDA関数を指定します。この関数は、`name`で指定した引数(行番号と列番号)を受け取り、計算結果を返します。

この関数は、Excelの動的配列機能の進化により、より柔軟な配列操作を可能にしています。

Excel 2021以前のバージョンでは利用できないため、注意が必要です。

お探しの解決策が見つからない場合は、こちらの「Excelトラブル完全解決データベース」で他のエラー原因や解決策をチェックしてみてください。

MAKEARRAY関数とLAMBDA関数の連携による配列生成手順

MAKEARRAY関数は、単独で使うよりもLAMBDA関数と組み合わせて使うことで、その真価を発揮します。

LAMBDA関数は、引数を受け取り、計算を実行する無名関数です。

MAKEARRAY関数の最後の引数としてLAMBDA関数を渡すことで、各セルに格納する値を動的に計算させることができます。

ここでは、指定した行数と列数で、各セルに「行番号 × 列番号」の値を格納する配列を生成する手順を解説します。

  1. 配列を生成したいセルを選択する
    結果を表示させたい任意のセルを選択します。
  2. MAKEARRAY関数を入力する
    選択したセルに、以下の数式を入力します。
    =MAKEARRAY(3, 4, LAMBDA(row_num, col_num, row_num*col_num))
    ここでは、行数3、列数4の配列を生成し、各セルに `row_num * col_num` の値を格納しています。
  3. Enterキーを押す
    数式を入力したらEnterキーを押します。

上記の手順で、以下のような3行4列の配列が生成されます。

1 2 3 4
2 4 6 8
3 6 9 12

この例では、LAMBDA関数内で `row_num` と `col_num` を掛け合わせていますが、ここに任意の計算式や関数を記述することで、様々なカスタム配列を作成できます。

例えば、各セルに特定の文字列や日付を格納したり、条件に基づいて異なる値を生成したりすることも可能です。

条件に基づいて配列を生成する例

LAMBDA関数内でIF関数などを使用すれば、条件に応じた値を持つ配列を生成できます。

ここでは、5行5列の配列を生成し、行番号と列番号が一致するセル(対角線上)には「MATCH」、それ以外のセルには「OTHER」という文字列を格納する例を示します。

  1. セルに数式を入力する
    以下の数式を任意のセルに入力します。
    =MAKEARRAY(5, 5, LAMBDA(r, c, IF(r=c, "MATCH", "OTHER")))
    ここでは、LAMBDA関数の引数名を `r` と `c` に短縮しています。
  2. Enterキーを押す
    数式を入力したらEnterキーを押します。

これにより、以下のような配列が生成されます。

MATCH OTHER OTHER OTHER OTHER
OTHER MATCH OTHER OTHER OTHER
OTHER OTHER MATCH OTHER OTHER
OTHER OTHER OTHER MATCH OTHER
OTHER OTHER OTHER OTHER MATCH

このように、LAMBDA関数と組み合わせることで、MAKEARRAY関数は非常に柔軟な配列生成ツールとなります。

ネストした配列を生成する

MAKEARRAY関数は、LAMBDA関数内でさらに別の配列生成関数(例えば、別のMAKEARRAY関数やSEQUENCE関数)を呼び出すことで、ネストした配列、つまり配列の中に配列を持つ構造を作成することも可能です。

これは、より複雑なデータ構造をExcel上で表現したい場合に有効です。

例えば、各行にSequenc関数で生成した連番配列を持たせるような場合です。

  1. セルに数式を入力する
    以下の数式を任意のセルに入力します。
    =MAKEARRAY(3, 1, LAMBDA(r, c, SEQUENCE(1, 4)))
    ここでは、3行1列の配列を生成し、各行(r)に1行4列の連番配列(SEQUENCE(1, 4))を格納します。
  2. Enterキーを押す
    数式を入力したらEnterキーを押します。

これにより、各セルに配列が格納された、以下のような結果が得られます。

{1, 2, 3, 4}
{1, 2, 3, 4}
{1, 2, 3, 4}

({}内は配列を表しています。Excelの表示上は、各セルに連番が表示されます。)

この機能は、多次元配列を扱う際の基礎となります。

MAKEARRAY関数利用時の注意点と制限事項

MAKEARRAY関数は非常に便利ですが、利用にあたってはいくつか注意すべき点があります。

これらの制限事項を理解しておくことで、意図しない結果を避け、関数を効果的に活用できます。

Excelのバージョンと互換性

MAKEARRAY関数は、Excel for Microsoft 365 の一部のバージョンで提供されています。

Excel 2021、Excel 2019、またはそれ以前のバージョンでは、この関数は利用できません。

したがって、これらの古いバージョンでファイル共有を行う場合は、互換性に注意が必要です。

古いバージョンでファイルを開いた場合、MAKEARRAY関数を含むセルはエラー値(例: #NAME?)を表示する可能性があります。

パフォーマンスへの影響

MAKEARRAY関数は、指定した行数と列数に応じて大量のセルに値を生成します。

特に、非常に大きな配列(数百万セル以上)を生成しようとすると、Excelの計算に時間がかかり、パフォーマンスが低下する可能性があります。

また、LAMBDA関数内で複雑な計算や大量の参照を行う場合も、計算負荷が増大します。

パフォーマンスに問題が生じる場合は、生成する配列のサイズを小さくするか、LAMBDA関数内の計算処理を見直すことを検討してください。

必要に応じて、Power Queryなど他のツールとの連携も視野に入れると良いでしょう。

エラー値の扱い

LAMBDA関数内でエラーが発生した場合、MAKEARRAY関数全体がエラーを返すことがあります。

例えば、LAMBDA関数内で参照しているセルにエラー値が含まれている場合や、計算結果がエラーになる場合などです。

このようなエラーを回避するには、LAMBDA関数内でIFERROR関数などを使用して、エラー発生時の代替値を指定することが有効です。

例:=MAKEARRAY(3, 3, LAMBDA(r, c, IFERROR(r/c, "Error")))

この場合、0での割り算が発生しても “Error” と表示され、配列全体の計算が停止するのを防げます。

引数の制限

MAKEARRAY関数では、行数と列数に正の整数を指定する必要があります。

0や負の数、または非数値の引数を指定すると、#VALUE!エラーが発生します。

また、LAMBDA関数で定義する引数名(name)は、Excelの予約語(例: `IF`, `SUM` など)や、既にワークシート内で使用されている名前と重複しないように注意が必要です。

引数名が不明確だと、予期せぬエラーの原因となることがあります。

ADVERTISEMENT

MAKEARRAY関数と他の配列生成関数との比較

Excelには、MAKEARRAY関数以外にも配列を生成するための関数が存在します。

ここでは、代表的な関数であるSEQUENCE関数、RANDARRAY関数と比較し、それぞれの特徴と使い分けについて解説します。

項目 MAKEARRAY関数 SEQUENCE関数 RANDARRAY関数
主な用途 指定した行数・列数で、計算結果を格納したカスタム配列を生成 指定した行数・列数で、連番配列を生成 指定した行数・列数で、ランダムな数値配列を生成
生成できる値 LAMBDA関数で定義した任意の計算結果(数値、文字列、真偽値など) 指定した開始値からの連番(整数) 指定した範囲内のランダムな数値(小数または整数)
動的な値生成 LAMBDA関数により非常に柔軟に対応可能 開始値やステップ値の変更は可能だが、値自体は連番 ランダムな値。計算ごとに再生成される(揮発性)
Excelバージョン Microsoft 365 Microsoft 365, Excel 2021 Microsoft 365, Excel 2021
LAMBDA関数の必要性 必須 不要(ただしLAMBDAと組み合わせることも可能) 不要(ただしLAMBDAと組み合わせることも可能)

MAKEARRAY関数が適しているケース

MAKEARRAY関数は、以下のような場合に特に適しています。

  • 特定の計算ロジックに基づいて、動的な配列を生成したい場合。
  • 条件分岐(IF関数など)を用いて、配列の各要素に異なる値を格納したい場合。
  • 複雑なデータ構造(例: 配列の中に配列)を生成したい場合。
  • 他の関数(SUMPRODUCT, FILTER, SORTなど)と連携し、高度なデータ処理を行いたい場合。

SEQUENCE関数が適しているケース

SEQUENCE関数は、以下のような場合に便利です。

  • 単純な連番(1, 2, 3…)や、一定の規則で増減する連番を生成したい場合。
  • 固定の行数・列数で、インデックス番号を振りたい場合。

RANDARRAY関数が適しているケース

RANDARRAY関数は、以下のような場合に役立ちます。

  • ランダムな数値データセットを一時的に作成したい場合(例: シミュレーション、テストデータ生成)。
  • 指定した範囲内のランダムな整数または小数値を生成したい場合。

これらの関数はそれぞれ得意なことが異なります。目的に応じて最適な関数を選択することが、Excelでの作業効率を高める鍵となります。

まとめ

本記事では、ExcelのMAKEARRAY関数を用いて、指定した行数と列数でカスタム配列を動的に生成する方法を解説しました。

LAMBDA関数と組み合わせることで、複雑な条件や計算に基づいた配列を柔軟に作成できることがご理解いただけたかと思います。

この関数を活用することで、データの前処理や分析、レポート作成の効率が大幅に向上します。

ぜひ、ご自身の業務でMAKEARRAY関数とLAMBDA関数を組み合わせて、カスタム配列生成を試してみてください。

さらに高度な配列操作には、XLOOKUP関数やFILTER関数、SORT関数などの動的配列関数との連携も検討してみましょう。

📊
Excelトラブル完全解決データベースこの記事以外にも、様々なエラー解決策をまとめています。困った時の逆引きに活用してください。

ADVERTISEMENT

この記事の監修者
📈

超解決 Excel・Word研究班

企業のDX支援や業務効率化を専門とする技術者チーム。20年以上のExcel・Word運用改善実績に基づき、不具合の根本原因と最短の解決策を監修しています。ExcelとWordを使った「やりたいこと」「困っていること」「より便利な使い方」をクライアントの視点で丁寧に提供します。

🏆
超解決 Excel検定 あなたのExcel実務能力を3分で測定!【1級・2級・3級】