更新日:、 作成日:
エクセル MAP 関数:セルの範囲をループして各値を計算した配列を作成する
はじめに
エクセルの MAP 関数の使い方を紹介します。
MAP 関数はセルの範囲をループして各値を計算した配列を作成します。LAMBDA 関数を使用して計算します。
=MAP(A1:A3,LAMBDA(x,x&"円")) のようにして、列「A」に 円 の文字を結合した配列を作成できます。A1:A3&"円" と同じです。
条件に一致するセルだけ計算したいときに「スピル」よりわかりやすくできます。
MAP 関数の引数
MAP(範囲1, LAMBDA)
MAP(範囲1, 範囲2, … LAMBDA)
範囲の値をLAMBDAで処理した配列を作成します。
引数「範囲」 | セルの範囲や配列を指定します。 |
引数「LAMBDA」 | LAMBDA 関数を指定します。LAMBDA 関数の引数に引数「範囲」の各値が順番に渡されます。それを計算した結果を配列にします。 |
LAMBDA 関数
「LAMBDA 関数」の引数は次のようになっています。
LAMBDA(値1,値2, … 計算)
引数「値」に MAP 関数の引数「範囲」の値が 1 つずつ順番に渡されます。
引数「計算」の結果が MAP 関数が返す配列の要素になります。
使い方
MAP 関数の使い方を紹介します。
セルの範囲の計算をするので MAP 関数を使用しなくても「スピル」で同じ結果を取得できます。
セルの範囲を足し算する
=B4:B6+10 の数式を MAP 関数にします。
引数「LAMBDA」の第 1 引数に「B4:B6」のセルを順番に渡します。引数「LAMBDA」の結果が配列の要素になります。次のように処理されます。
B5+10
B6+10
セルの範囲に文字列を結合する
=B4:B6&"円" の数式を MAP 関数にします。
引数「LAMBDA」は次のように処理されます。
B5&"円"
B6&"円"
2 つのセルの範囲を掛け算する
セルの範囲「B4」~「B6」と「C4」~「C6」を掛け算します。B4:B6*C4:C6 と同じ式です。
引数「LAMBDA」は次のように処理されます。
B5*C5
B6*C6
セルの範囲の文字数を取得する
セルの範囲「B4」~「B6」の文字数を取得します。=LEN(B4:B6) と同じ式です。
引数「LAMBDA」は次のように処理されます。
LEN(B5)
LEN(B6)
スポンサーリンク
使い方、条件を指定
MAP 関数の条件を指定する使い方を紹介します。
値が 3 以上のときに 10 倍する
3 以上の値を 10 倍します。それ以外はそのままにします。=IF(B4:B7>=3,B4:B7*10,B4:B7) と同じ式です。
LAMBDA(x,
IF(x>=3,x*10,x)))
名前がエクセルの値を 10 倍にする
名前が エクセル なら値を 10 倍します。それ以外は値をそのまま返します。=IF(B4:B8="エクセル",C4:C8*10,C4:C8) と同じ式です。
LAMBDA(b,c,
IF(b="エクセル",c*10,c)))
AND 条件、名前がエクセルかつバージョンが 365 か判定する
名前が エクセル でバージョンが 365 か判定します。=(B4:B8="エクセル")*(C4:C8=365) と同じ式です。
LAMBDA(b,c,
AND(b="エクセル",c=365)))
AND 条件、名前がエクセルかつバージョンが 365 の値を取得する
名前が エクセル でバージョンが 365 なら値を取得します。それ以外は FALSE にします。=IF((B4:B8="エクセル")*(C4:C8=365),D4:D8,FALSE) と同じ式です。
LAMBDA(b,c,d,
IF(AND(b="エクセル",c=365),d,FALSE)))
OR 条件、名前がエクセルまたはバージョンが 365 か判定する
名前が エクセル またはバージョンが 365 か判定します。=(B4:B8="エクセル")+(C4:C8=365) と同じ式です。
LAMBDA(b,c,
OR(b="エクセル",c=365)))
OR 条件、名前がエクセルまたはバージョンが 365 の値を取得する
名前が エクセル またはバージョンが 365 なら値を取得します。それ以外は FALSE にします。=IF((B4:B8="エクセル")+(C4:C8=365),D4:D8,FALSE) と同じ式です。
LAMBDA(b,c,d,
IF(OR(b="エクセル",c=365),d,FALSE)))
高度な使い方
MAP 関数と他の関数を組み合わせた使い方などを紹介します。
抽出した結果を 10 倍する
3 以上の値を抽出して 10 倍します。「FILTER 関数」を使用して条件に一致する値を抽出できます。
FILTER(D4:D8,D4:D8>=3),
LAMBDA(d,d*10))
解説
セルの範囲の各値を計算した配列を作成します。「スピル」を使用しても同じ結果を取得できます。MAP 関数を使用した方が、条件をわかりやすく入力できます。
引数「範囲」と他の引数「範囲」の大きさを同じにします。範囲が一致していない箇所の値はエラー #N/A になります。
引数「LAMBDA」の第 1 引数に引数「範囲1」のセルや値を順番に渡します。第 2 引数には引数「範囲2」のように、引数「範囲」の数だけ引数「LAMBDA」の引数に渡します。
引数「範囲」の数と引数「LAMBDA」の引数の数が一致していないときはエラー #VALUE! になります。
引数「LAMBDA」の結果がセルの範囲や配列のときはエラー #CALC! になります。単一の値を返す必要があります。
引数「LAMBDA」が「LAMBDA 関数」でないときはエラー #VALUE! になります。
スポンサーリンク