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

[Microsoft 365]

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

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

スポンサーリンク

書式

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

配列]の要素を1つずつ[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関数 : 配列の各要素を1つずつLAMBDA関数に渡して計算する
  • BYROW関数 : 配列の各行を1行ずつLAMBDA関数に渡して計算する
  • BYCOL関数 : 配列の各列を1列ずつLAMBDA関数に渡して計算する

使用例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]が表示されます。
スポンサーリンク

関連記事