MAP関数の使い方|範囲の1つずつに同じ計算をする・2つの列を組み合わせる・LAMBDA【実機で解説】

MAP関数の使い方|範囲の1つずつに同じ計算をする・2つの列を組み合わせる・LAMBDA【実機で解説】

MAP 関数は、範囲の1 つずつの値に同じ計算をして、結果を同じ形で並べる関数です。=MAP(B2:B6,LAMBDA(x,IF(x>=60,"合格","不合格"))) と書くと、5 人分の合否が 1 つの式で出ます。

2 つ以上の範囲を組み合わせて計算できるのが便利なところです。この記事では、MAP の書き方と使い方を、実際の Excel で確かめた結果で説明します。MAP は Microsoft 365 の関数です。

練習用Excelファイル(無料ダウンロード)
国語と数学の点数の表と、この記事の MAP の式をまとめた練習ファイルです。
Excelファイル(.xlsx)/登録不要/数式・練習データ入り
目次

MAP 関数の書き方

=MAP(範囲1, [範囲2, …], LAMBDA(名前1, [名前2, …], 計算))
引数意味
範囲1 つずつ計算したい値の範囲(いくつでも)
名前範囲の 1 つの値を表す名前(範囲と同じ数だけ書く)
計算その値で何をするか

範囲を 2 つ渡したら、LAMBDA の名前も 2 つにします。LAMBDA の書き方は LAMBDA関数の使い方で説明しています。

1. 1 つずつ合否を付ける

国語の点数の 1 つずつ(x)に IF で合否を付けます。

=MAP(B2:B6,LAMBDA(x,IF(x>=60,"合格","不合格")))
エクセルのMAP関数で国語の点数の1つずつに合格と不合格を付けた画面
エクセルのMAP関数で国語の点数の1つずつに合格と不合格を付けた画面

佐藤は 合格、高橋は 不合格 でした。

2. 2 つの列を組み合わせて合計する

国語(k)と数学(s)の 2 つの範囲を渡し、LAMBDA の名前も 2 つにします。

=MAP(B2:B6,C2:C6,LAMBDA(k,s,k+s))
エクセルのMAP関数で国語と数学の2つの範囲を組み合わせて1人ずつの合計を出した画面
エクセルのMAP関数で国語と数学の2つの範囲を組み合わせて1人ずつの合計を出した画面

佐藤は 127、伊藤は 157 でした。

3. 2 つとも 60 点以上かを判定する

AND は範囲をまとめると 1 つの答えになってしまいますが、MAP の中なら 1 人ずつ判定できます。

=MAP(B2:B6,C2:C6,LAMBDA(k,s,AND(k>=60,s>=60)))
エクセルのMAP関数とANDで国語と数学の両方が60点以上かを1人ずつ判定した画面
エクセルのMAP関数とANDで国語と数学の両方が60点以上かを1人ずつ判定した画面

両方 60 点以上の鈴木と伊藤が TRUE になりました。

4. A・B・C のランクを付ける

IFS を入れると、点数ごとにランクを付けられます。

=MAP(C2:C6,LAMBDA(x,IFS(x>=80,"A",x>=60,"B",TRUE,"C")))
エクセルのMAP関数とIFSで数学の点数にAとBとCのランクを付けた画面
エクセルのMAP関数とIFSで数学の点数にAとBとCのランクを付けた画面

85 点の鈴木は A、68 点の高橋は B、40 点の田中は C でした。

【実機で検証】MAP でつまずくところ

エクセルのMAP関数で範囲の大きさや名前の数がちがうときやANDを範囲で使ったときの結果を確かめた画面
エクセルのMAP関数で範囲の大きさや名前の数がちがうときやANDを範囲で使ったときの結果を確かめた画面
ためしたこと式結果
AND を範囲でそのまま使った=AND(MAP!B2:B6>=60,MAP!C2:C6>=60)FALSE
範囲の大きさがちがう(B2:B6 と C2:C4)の先頭=INDEX(MAP(MAP!B2:B6,MAP!C2:C4,LAMBDA(k,s,k+s)),4)#N/A
範囲 2 つで名前が 1 つ=MAP(MAP!B2:B6,MAP!C2:C6,LAMBDA(k,k))#VALUE!
IF だけで書いた合否の先頭=INDEX(IF(MAP!B2:B6>=60,"合格","不合格"),1)合格
1 つずつ配列を返す=MAP(MAP!B2:B6,LAMBDA(x,SEQUENCE(2)))#CALC!

AND に範囲をそのまま入れると FALSE の 1 つだけになりました。AND・OR は範囲をまとめて判定する関数なので、1 人ずつ判定したいときは MAP の中で使います。

大きさのちがう範囲(5 行と 3 行)を渡すと、足りない 4 行目は #N/A になりました。範囲 2 つに名前を 1 つしか書かないと #VALUE! です。

合否のような簡単な判定なら、=IF(B2:B6>=60,"合格","不合格") でも同じ結果(先頭は 合格)になります。1 つずつ配列を返すと #CALC! になるので、LAMBDA の計算は 1 つの値にします。

よくある質問

MAP が使えない(#NAME?)ときは?

MAP は Microsoft 365 の関数です。Excel 2021 以前では、1 行目に式を書いて下へコピーします。

1 行ずつ合計したいときは?

表の 1 行ずつの合計・最大は BYROW 関数のほうが短く書けます。

最後に 1 つの答えにまとめたいときは?

1 つずつ計算して合計などにまとめるなら REDUCE 関数を使います。

練習用Excelファイル(無料ダウンロード)
この記事の例をまとめた練習ファイルです。
Excelファイル(.xlsx)/登録不要/数式・練習データ入り

あわせて読みたい:関連記事

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次