MAKEARRAY関数 ● LAMBDA関数に連番を渡して計算する

[Microsoft 365]

Excelの MAKEARRAY(メイク・アレイ)関数の使い方を紹介します。

Microsoft 365の新関数であるMAKEARRAY関数は、LAMBDA関数のヘルパー関数です。LAMBDA関数に1行の連番と1列の連番を渡して行と列の総当たりで計算し、その戻り値からなる配列を返します。

スポンサーリンク

書式

LAMBDA関数に連番を渡して計算する
=MAKEARRAY(行数, 列数, LAMBDA関数)

LAMBDA関数]の引数[変数1]に「1」から始まる[行数]分の配列、引数[変数2]に「1」から始まる[列数]分の配列を渡して計算し、その戻り値からなる配列を返します。返される配列のサイズは、[行数]×[列数]となります。

引数

引数 説明
行数 LAMBDA関数]の引数[変数1]に渡す配列の行数を指定する。省略時は1となる。
列数 LAMBDA関数]の引数[変数2]に渡す配列の列数を指定する。省略時は1となる。
LAMBDA関数 戻り値の計算方法を指定するためのLAMBDA関数を指定する。

LAMBDA関数の書式は以下のとおりです。LAMBDA関数では引数[変数]を最大253個指定できますが、MAKEARRAY関数と一緒に使用するときは2つ指定します。

=LAMBDA([変数1, 変数2…], 計算式)

LAMBDA関数の使い方は「LAMBDA関数 ● オリジナルの関数を定義する」を参照してください。

使用例1…掛け算九九の表を作成する

MAKEARRAY関数を使用して、5の段までの掛け算九九の表を作成してみます。9行5列の表を作成するので、引数[行数]に「9」、[列数]に「5」を指定します。また、引数[LAMBDA関数]に「LAMBDA(r,c,c*r)」を指定します。すると、[LAMBDA関数]の「r」に「{1;2;3;4;5;6;7;8;9}」という9行1列の配列の要素が、「c」に「{1,2,3,4,5}」という1行5列の配列の要素が順に渡され、9行5列の配列が返されます。

=MAKEARRAY(行数, 列数, LAMBDA関数)

セルA3 | =MAKEARRAY(9,5,LAMBDA(r,c,c*r))

実際にセルにMAKEARRAY関数を入力するときは、単一のセル(ここではセルA3)を選択して入力します。[Enter]キーを押して数式を確定すると、戻り値の配列のサイズ(ここでは9行5列)の範囲に数式がスピル(隣接するセルに数式が自動拡張すること)し、結果が表示されます。

図1 セルA3を選択してMAKEARRAY関数を入力する。[Enter]キーを押すと数式がスピルし、セルA3~E11の範囲にMAKEARRAY関数の結果が表示される。

使用例2…掛け算九九の表を改良する

図1の数式に手を加えて、九九の表を「1 × 1 = 1」「1 × 2 = 2」形式になるように改良します。それには、MAKEARRAY関数の引数[LAMBDA関数]に「LAMBDA(r,c,c & " × " & r & " = " & r*c)」を指定します。

セルA3 | =MAKEARRAY(9,5,LAMBDA(r,c,c & " × " & r & " = " & r*c))

実際に数式を修正するには、入力時と同様に単一のセルA3を選択して数式を修正し、[Enter]キーで確定します。

図2 セルA3を選択してMAKEARRAY関数を修正する。[Enter]キーを押すと、セルA3~E11の範囲の数式が自動で修正される。

イータ縮小ラムダを使う

(2024/11/25追記)
Microsoft 365では、ヘルパー関数内のLAMBDA関数の記述を簡略化する「イータ縮小ラムダ」という仕組みが使えるようになりました。

例えば次の形式の数式の場合、

=ヘルパー関数(引数, LAMBDA(x, 関数(x)))

LAMBDA(x, 関数(x))」の部分を単純に「関数」に置き換えて、

=ヘルパー関数(引数,関数)

と簡略化できます。この簡略化された「関数」がイータ縮小ラムダです。

ヘルパー関数の入力中に、イータ縮小ラムダを使える箇所で入力候補のリストが表示される場合があります。

図3 イータ縮小ラムダの候補。

表示される入力候補は、SUM、AVERAGE、MEDIAN、COUNT、COUNTA、MAX、MIN、PRODUCT、ARRAYTOTEXT、CONCAT、SRDEV.S、STDEV.P、VAR.S、VAR.P、MODE.SNGL、LAMBDA ですが、そのほかの関数も使える場合があるので試してみるとよいでしょう。

次の2つの数式は同じ結果になります。

明示的にLAMBDA関数を記述
セルA2 | =MAKEARRAY(5,5,LAMBDA(5,5,PRODUCT(x,y)))

イータ縮小ラムダを使用
セルA2 | =MAKEARRAY(5,5,PRODUCT)

図4 1~5の掛け算表を作成。PRODUCT関数はSUM関数の掛け算版で、引数の数値を掛け算した結果を返す関数。

スポンサーリンク

関連記事