MAP関数 ● LAMBDA関数に配列の各要素を渡して計算する

[Microsoft 365]

Excelの MAP(マップ)関数の使い方を紹介します。

Microsoft 365の新関数であるMAP関数は、LAMBDA関数のヘルパー関数です。LAMBDA関数に配列を渡して要素ごとに計算し、その戻り値からなる配列を返します。

スポンサーリンク

書式

LAMBDA関数に配列を渡して要素ごとに計算する
=MAP(配列1, [配列2…], LAMBDA関数)

配列]を[LAMBDA関数]に渡して要素単位で計算し、その戻り値からなる配列を返します。

引数

引数 説明
配列 配列やセル範囲を指定する。
LAMBDA関数 戻り値の計算方法を指定するためのLAMBDA関数を指定する。

LAMBDA関数の書式は以下のとおりです。MAP関数の引数[配列1]がLAMBDA関数の引数[変数1]、MAP関数の引数[配列2]がLAMBDA関数の引数[変数2]……、に渡されます。

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

MAP関数の使用にはLAMBDA関数の知識が必要です。LAMBDA関数の使い方は「LAMBDA関数 ● オリジナルの関数を定義する」を参照してください。

以下の「使用例1」「使用例2」では、四則演算を例にMAP関数の使い方を紹介します。実際にはこのような単純な計算にMAP関数を使うことはないと思いますが、MAP関数の使い方の例として参考にしてください。

使用例1…1つの配列を渡す

「セルB2~C4の数値を2倍にした配列を求める」という簡単な例でMAP関数の使い方を紹介します。MAP関数の引数[配列1]にセルB2~C4を指定し、引数[LAMBDA関数]に数値に2を掛けた結果を求めるLAMBDA関数「LAMBDA(x,x*2)」を指定します。すると、セルB2~C4が1つずつ「x」に渡され、「x*2」が計算されます。セルB2~C4は3行2列の配列で要素は6つなので、「x*2」の計算が6回行われ、3行2列の配列が返されます。

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

=MAP(配列1, LAMBDA関数)

セルE2 | =MAP(B2:C4,LAMBDA(x,x*2))

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

MAP関数を修正したいときは、入力時と同様に単一のセルE2を選択して数式を修正し、[Enter]キーで確定してください。

メモ

LAMBDA関数に配列を渡して要素/行/列単位で計算する
LAMBDA関数に配列を渡して計算するヘルパー関数には以下の種類があります。目的に応じて使い分けてください。
  • MAP関数 : LAMBDA関数に配列を渡して要素単位で計算する
  • BYROW関数 : LAMBDA関数に配列を渡して1行ずつ行単位で計算する
  • BYCOL関数 : LAMBDA関数に配列を渡して1列ずつ列単位で計算する

使用例2…2つの配列を渡す

次に、2つの配列を渡す例を紹介します。MAP関数の引数[配列1]にセルB2~C4を指定し、引数[配列2]にセルE2~F4を指定します。引数[LAMBDA関数]に「x」と「y」の和を求めるLAMBDA関数「LAMBDA(x,y,x+y)」を指定します。すると、セルB2~C4とセルE2~F4の同じ位置にある要素が1つずつ「x」と「y」に渡され、「x+y」が計算され、同じサイズの配列が返されます。

=MAP(配列1, 配列2, LAMBDA関数)

セルH2 | =MAP(B2:C4,E2:F4,LAMBDA(x,y,x+y))

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

メモ

2つの配列のサイズが異なる場合
MAP関数の引数[配列1]と[配列2]のサイズが異なる場合、対応する相手がない要素の位置にエラー値[#N/A]が表示されます。

イータ縮小ラムダを使う

(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関数を記述
セルD2 | =MAP(A2:A6,B2:B6,LAMBDA(x,y,SUM(x,y)))

イータ縮小ラムダを使用
セルD2 | =MAP(A2:A6,B2:B6,SUM)

図4 x と y の各要素をSUM関数で合計する。

スポンサーリンク

関連記事