この関数は、LAMBDA 関数を各値に適用して、指定した配列内の各値を新しい値にマッピングします。
使用例
MAP(A1:A5, LAMBDA(セル, セル*2)): 範囲を入力として指定した MAP 関数。
MAP(A1:A5, B1:B5, LAMBDA(セル 1, セル 2, MAX(セル 1, セル 2))): 複数の範囲を入力として指定した MAP 関数。
MAP(UNIQUE(A1:A10), LAMBDA(数値, 数値 + 1)): 配列を入力として指定した MAP 関数。
構文
MAP(配列1, [配列2, ...], LAMBDA)
配列 1: マッピング対象の配列または範囲。配列 2, …: (省略可)マッピング対象の追加の配列または範囲。LAMBDA: マッピングされた新しい値を取得するために、指定した配列内の各値にマッピングするLAMBDA関数。- 構文:
LAMBDA(名前 1, [名前 2, …], 数式) - 要件:
- この
LAMBDA関数には、渡される配列ごとに 1 つの名前引数と、それらの引数を使用する数式を指定する必要があります。LAMBDA関数を適用するときに、名前引数は渡された配列にマッピングされる現在の値に解決されます。
- この
- 構文:
備考
-
渡された
LAMBDA関数は、MAP関数に指定した入力配列と完全に同じ数の名前引数を受け入れる必要があります。そうでない場合、#N/Aエラーが返されます。これらの引数は、新しい値にマッピングされる入力配列の値に対応しています。 -
入力配列の値は単一の値にマッピングされる必要があります。マッピングされた値の配列の結果は返されません。
名前付き関数はLAMBDA関数のパラメータとして渡すことができ、この場合はLAMBDA関数と同様に動作します。詳しくは、名前付き関数についてのページをご覧ください。MAP関数に渡される入力配列と完全に同じ数の引数プレースホルダが定義されている必要があります。名前付き関数の後に丸かっこを続けることはできません。
例
MAP 関数を使用した単純な倍増演算
サンプルデータ:
|
A |
B |
C |
D |
|
|---|---|---|---|---|
|
1 |
1 |
2 |
||
|
2 |
3 |
4 |
||
|
3 |
2 |
4 |
||
|
4 |
6 |
8 |
例: この式を C3 に入力する: =MAP(A1:B2, LAMBDA(セル, セル*2))
カンマで区切られた値を、ハイフン付きの SKU コードにマッピングする
サンプルデータ:
|
A |
B |
|
|---|---|---|
|
1 |
ジーンズ,黒,XL |
ジーンズ-黒-XL |
|
2 |
ショートパンツ,茶,S |
ショートパンツ-茶-S |
|
3 |
T シャツ,赤,L |
T シャツ-赤-L |
|
4 |
スカート,ピンク,M |
スカート-ピンク-M |
例: 次の数式を B1 に入力する: =MAP(A1:A4, LAMBDA(アイテム, JOIN("-", SPLIT(アイテム, ","))))
複数の入力範囲を各データセット内の最大値にマッピングする
サンプルデータ:
|
A |
B |
C |
D |
E |
F |
G |
H |
|
|---|---|---|---|---|---|---|---|---|
|
1 |
38.9 |
17.8 |
42 |
20.2 |
38.6 |
21.2 |
||
|
2 |
39.2 |
19.6 |
37.8 |
17.1 |
34.6 |
21.2 |
||
|
3 |
34.1 |
18.1 |
41.1 |
17.6 |
36.6 |
17.8 |
例: =MAP(A1:B3, D1:E3, G1:H3, LAMBDA(値 A, 値 B, 値 C, MAX(値 A, 値 B, 値 C)))
結果:
|
A |
B |
|
|---|---|---|
|
1 |
42 |
21.2 |
|
2 |
39.2 |
21.2 |
|
3 |
41.1 |
18.1 |
名前付き関数を LAMBDA 関数として使用して、数値を含むセルをカウントする
サンプルデータ:
|
A |
B |
C |
|
|---|---|---|---|
|
1 |
13 ラブ 30 サーティン・ラブ・サーティ |
ワイルド・スピードX2 |
十二人の怒れる男 |
|
2 |
エターナル・サンシャイン |
13日の金曜日 |
ノーカントリー |
名前付き関数: CONTAINS_NUMBER が名前付き関数であり、指定した文字列値に数値が含まれているかどうかを確認します。
数式の定義: =ARRAYFORMULA(OR(ISNUMBER(SPLIT(セル, " "))))。ここで、セルは CONTAINS_NUMBER について定義された引数プレースホルダです。
例: =COUNTIF(MAP(A1:C2, CONTAINS_NUMBER), true)
結果:
|
3 |
一般的なエラー
入力配列のディメンションが一致しない入力配列のディメンションが一致しない場合、次のエラーが発生します。
「MAP の配列引数のサイズが異なります。」
例: =MAP(C1:C4, D1:D2, LAMBDA(x, x+1))
この例では、配列 C1:C4 が配列 D1:D2 のサイズと一致していません。
渡された LAMBDA 関数の名前引数の数が、MAP 関数に指定した入力配列の数と完全に同じでない場合、次のエラーが発生します。
「LAMBDA の引数の個数が間違っています。3 個の引数を指定する必要がありますが、2 個を指定しています。」
例: =MAP(C1:C4, D1:D4, LAMBDA(セル, セル+1))
この例では、MAP 関数に 2 個の配列を渡しましたが、LAMBDA 関数には 1 個の名前引数「セル」しか指定していません。
MAP 関数の最後のパラメータが LAMBDA 関数でなかった場合、次のエラーが発生します。
「引数は LAMBDA 関数にする必要があります。」
例: =MAP(C1:C3, 3)
有効ではない名前引数がある場合、次のエラーが発生します。
「関数 LAMBDA の引数 1 は有効な名前ではありません。」
例: =MAP(C1:C3, LAMBDA(C1, C1+1))
この例では、C1 は範囲と競合するため、無効な名前引数です。
入力配列に LAMBDA 関数を適用して各値が複数の値または別の配列にマッピングされると、次のエラーが発生します。
「単一の値が返されます。ネストされた配列の結果は返されません。」
例: =MAP(E1, LAMBDA(単語, SPLIT(単語, " ")))
この例では、セル内のテキストを単語の配列にマッピングしようとしています。
関連する関数
- LAMBDA 関数: 一連の
名前引数と、それらの引数を使用する数式を含むカスタム関数を作成して返すことができます。 - REDUCE 関数: 配列を累積結果に減らします。
- BYROW 関数: 配列を行単位でグループ化します。
- BYCOL 関数: 配列を列単位でグループ化します。
- SCAN 関数: 配列をスキャンして、中間値を生成します。
- MAKEARRAY 関数: 指定したディメンションの計算結果の配列を作成します。
- 名前付き関数の作成と使用:
LAMBDA関数と同じように、カスタム関数を作成して保存できます。