ExcelのMAKEARRAY関数とは?
MAKEARRAY関数は、指定した行数・列数の配列をゼロから生成する関数です。「メイクアレイ」と読みます。名前の由来は「make(作る)+ array(配列)」です。
最大の特徴は、各セルの値を自分で決められることです。LAMBDA関数の中に計算式を書きます。行番号と列番号に応じた値を自由に設定できます。
MAKEARRAY関数は「LAMBDAヘルパー関数」の1つです。MAP関数やREDUCE関数などの仲間がいます。他のヘルパー関数は既存の配列を加工します。一方、MAKEARRAYだけは「ゼロから配列を作る」役割を担います。
対応環境はMicrosoft 365およびExcel 2021です。Excel 2019以前では使用できません。
MAKEARRAY関数の書き方(構文と引数)
基本構文
=MAKEARRAY(rows, cols, LAMBDA(r, c, 計算式))
3つの引数はすべて必須です。
引数の詳細
| 引数 | 必須 | 説明 |
|---|---|---|
| rows | はい | 生成する配列の行数(1以上の整数) |
| cols | はい | 生成する配列の列数(1以上の整数) |
| LAMBDA(r, c, 計算式) | はい | 各セルの値を決定する関数 |
LAMBDA内の仮引数は必ず2つ必要です。1つ目に行番号、2つ目に列番号が渡されます。
行番号(r)・列番号(c)の動き方
行番号・列番号はどちらも1から始まります。たとえば3行2列の配列では、各セルに次のようにrとcが渡されます。
| 列1 (c=1) | 列2 (c=2) | |
|---|---|---|
| 行1 | r=1, c=1 | r=1, c=2 |
| 行2 | r=2, c=1 | r=2, c=2 |
| 行3 | r=3, c=1 | r=3, c=2 |
このrとcを計算式の中で使うことで、各セルの値を自由に決められます。
MAKEARRAY関数の基本的な使い方
定数で埋めた配列を作る
最もシンプルな例は、すべて同じ値で埋めた配列です。次の数式で3行4列のゼロ埋め配列を作れます。
=MAKEARRAY(3, 4, LAMBDA(r, c, 0))
rやcを使わず、固定値の0を返しています。テンプレートの初期値を作りたいときに便利です。
九九表(掛け算表)を作る
MAKEARRAY関数の定番パターンが九九表です。行番号と列番号を掛けるだけで完成します。
=MAKEARRAY(9, 9, LAMBDA(r, c, r*c))
r=3, c=7のセルには「3×7=21」が入ります。行番号と列番号の組み合わせで値を決められます。これがMAKEARRAYの強みです。
MAKEARRAY関数の実務活用パターン
パターン1: 連番配列を生成する
行番号と列番号を組み合わせて連番を作れます。3行4列の連番配列は次のとおりです。
=MAKEARRAY(3, 4, LAMBDA(r, c, (r-1)*4+c))
1行目には1〜4、2行目には5〜8が入ります。ただし単純な連番ならSEQUENCE関数のほうがシンプルです。
パターン2: 条件付き配列を作る(IF組み合わせ)
IF関数と組み合わせれば、条件で値を変えられます。たとえば5×5の単位行列は次の数式で生成できます。
=MAKEARRAY(5, 5, LAMBDA(r, c, IF(r=c, 1, 0)))
対角線上(行番号=列番号)のセルだけが1になります。それ以外は0です。
パターン3: ランダムデータを生成する
RANDBETWEEN関数と組み合わせると、テストデータを一括で作れます。
=MAKEARRAY(10, 5, LAMBDA(r, c, RANDBETWEEN(1, 100)))
10行5列のランダムな整数が生成されます。ダミーデータが必要なときに重宝します。
SEQUENCE関数との違い・使い分け
MAKEARRAY関数とSEQUENCE関数は、どちらも配列を生成します。ただし得意分野が異なります。
| 比較項目 | MAKEARRAY | SEQUENCE |
|---|---|---|
| 生成方法 | LAMBDAで自由計算 | 等差数列(開始値+ステップ) |
| 柔軟性 | 各セルで異なる計算が可能 | 規則的な連番のみ |
| LAMBDA | 必須 | 不要 |
| 構文の複雑さ | やや複雑 | シンプル |
| 典型用途 | 九九表・単位行列・条件付き配列 | 連番・通し番号・日付連番 |
使い分けの目安はシンプルです。等差数列(1,2,3…など)ならSEQUENCEを選びます。位置に応じた自由な計算が必要ならMAKEARRAYの出番です。
LAMBDAヘルパー関数の比較表
MAKEARRAY関数を含む6つのLAMBDAヘルパー関数の全体像です。
| 関数 | 入力 | 処理 | 出力 |
|---|---|---|---|
| MAP | 既存配列 | 各要素にLAMBDA適用 | 同サイズ配列 |
| REDUCE | 既存配列 | 累積処理 | 単一値 |
| SCAN | 既存配列 | 累積処理(途中結果) | 同サイズ配列 |
| BYROW | 既存配列 | 行ごとにLAMBDA | 列ベクトル |
| BYCOL | 既存配列 | 列ごとにLAMBDA | 行ベクトル |
| MAKEARRAY | なし(行数×列数指定) | 行番号・列番号から計算 | 新規配列 |
他の5つは既存の配列を変換・集計する関数です。MAKEARRAYだけが「配列を新しく生み出す」役割を持っています。
よくあるエラーと対処法
#NAME?エラー
Excel 2019以前で使用すると発生します。MAKEARRAY関数はMicrosoft 365またはExcel 2021が必要です。関数名のスペルミスでも発生するので確認しましょう。
#VALUE!エラー
次のケースで発生します。
- rows/colsに0以下の値や小数を指定した
- LAMBDAの仮引数が2個になっていない
行数・列数は1以上の整数を指定してください。LAMBDAの仮引数は必ず2つにしましょう。
#CALC!エラー
配列が大きすぎてメモリ不足になると発生します。行数・列数を小さくして対処してください。
まとめ
MAKEARRAY関数は、行数・列数とLAMBDAを指定して配列を自由に生成できる関数です。
ポイントを整理します。
- 構文は
=MAKEARRAY(rows, cols, LAMBDA(r, c, 計算式)) - 行番号(r)と列番号(c)は1から始まる
- 等差数列ならSEQUENCE、自由な計算が必要ならMAKEARRAY
- 対応環境はMicrosoft 365およびExcel 2021
まずは九九表の例から試してみてください。慣れてきたら、条件付き配列やランダムデータ生成にも挑戦してみましょう。
関連記事:
