GoogleスプレッドシートのLAMBDA関数とは?構文の基本から自作関数・ヘルパー関数の活用法まで徹底解説

Googleスプレッドシートで表計算やデータ処理を行っていると、「同じ複雑な計算式をあちこちのセルに何回もコピペしたくない」「自分専用の分かりやすいオリジナル関数を作りたい」「配列数式をもっとスマートに組み立てたい」と感じる場面が多くあります。

そうした高度な集計・業務自動化のニーズに応えるために導入されたのが「LAMBDA(ラムダ)関数」です。

プログラミング言語の無名関数(ラムダ式)の概念をスプレッドシート上で実現したこの関数は、単体でロジックをテストできるだけでなく、「名前付き関数」として登録してカスタム関数化したり、「MAP」や「BYROW」などの配列ヘルパー関数と組み合わせることで真価を発揮します。

この記事では、LAMBDA関数の基本概念・構文構造・単体テストの実行方法から、名前付き関数の作成手順、ヘルパー関数との連携テクニックまで、図解とスプレッドシート画面キャプチャを交えて徹底的に解説します。

LAMBDA(ラムダ)関数とは?誕生の背景とメリット

LAMBDA関数とは、一言で言えば「スプレッドシートの数式内でカスタムロジック(オリジナルの関数)をその場で定義できる関数」です。

従来のGoogleスプレッドシートでは、複雑な計算を行う際に同じ計算式を何重にもネストして記述したり、GAS(Google Apps Script)でカスタム関数を自作する必要がありました。
しかし、長い数式は可読性や保守性が著しく低下し、GASのカスタム関数は大量のセルで呼び出すと読み込み速度が大幅に遅くなるという課題がありました。

LAMBDA関数を導入する3大メリット:

  • 計算ロジックを変数名で整理でき、長くて複雑な数式をシンプルに部品化できる
  • GASを使わずにネイティブな高速処理で「自作関数(名前付き関数)」を定義できる
  • MAPやBYROWなどの配列ヘルパー関数と連携し、1セルからスピル(配列展開)する高度な集計が可能になる

LAMBDA関数の構文と引数の仕組み

LAMBDA関数の基本的な構文は、以下のように「引数の名前の定義」と「計算ロジックの定義」から成り立ちます。

構文パターン:

=LAMBDA([仮引数1, 仮引数2, ...], 計算式)([実引数1, 実引数2, ...])

LAMBDA関数の構文と引数受け渡しの仕組み図解

▲ LAMBDA関数の「定義ブロック」と「実行ブロック」の対応関係

「定義ブロック」と「実行ブロック(後ろのカッコ)」の関係

LAMBDA関数を単独でセルに入力する場合、=LAMBDA(...) の後ろに必ず (値1, 値2) のような追加のカッコを記述します。

二重カッコになる理由:

  • 前のカッコ LAMBDA(x, y, x * 1.1 + y) は「xとyを受け取って計算する関数を作る」という宣言です。
  • 後ろのカッコ (1000, 200) は「いま作った関数に1000と200を渡して即座に実行する」という呼び出し命令です。

もし後ろのカッコを付けずに =LAMBDA(x, y, x * 1.1 + y) だけをセルに入力すると、スプレッドシートは「関数の設計図を作っただけで、計算するデータが渡されていない」と判断し、「#VALUE! エラー(引数が無効です)」を表示します。
単体で動作確認する際は、必ず後ろのカッコに実際の値やセル参照を渡す必要があります。

スプレッドシート上での単体実行と実践例

実際のGoogleスプレッドシート上でLAMBDA関数をどのように記述し、計算結果を得るのかを具体例で確認してみましょう。

本体価格と消費税率から税込価格を計算する

本体価格(A2)と消費税率(B2)を引数として受け取り、税込金額を算出するLAMBDA数式です。

=LAMBDA(price, rate, price * (1 + rate))(A2, B2)

スプレッドシート上でのLAMBDA関数実行画面キャプチャ

▲ スプレッドシートのセル上でセル参照を渡してLAMBDAを単体実行した例

この数式では、price にセルA2の値(1,000)が、rate にセルB2の値(10% = 0.1)が代入され、内部の price * (1 + rate) が計算されて「1,100」という正しい税込価格が出力されます。

条件分岐(IF)を組み合わせた判定処理

LAMBDA関数の中には、四則演算だけでなくIF関数や文字列操作関数など、通常のスプレッドシート関数を自由に組み込むことができます。

=LAMBDA(score, IF(score >= 80, "合格", "不合格"))(A2)

点数(score)を受け取り、80点以上なら「合格」、それ以外なら「不合格」を返すロジックをスッキリと表現できます。

LAMBDAを使って「名前付き関数(カスタム関数)」を作成する

単体での動作確認が完了したら、そのLAMBDA式を「名前付き関数(Named Functions)」として登録することで、あなただけのオリジナル関数として再利用できるようになります。

名前付き関数の登録手順:

  1. スプレッドシートのメニューから「データ」>「名前付き関数」をクリックします。
  2. 右側のサイドパネルで「新しい関数を追加」をクリックします。
  3. 関数名(例:CALC_TAX)を入力し、引数プレースホルダ(例:price, rate)を設定します。
  4. 数式の定義欄に price * (1 + rate) を入力して「作成」をクリックします。

一度名前付き関数として登録すれば、シート上のどのセルからでも =CALC_TAX(A2, B2) と書くだけで計算できるようになります。
GASスクリプトを書かずに作成できるため、動作が非常に軽快で、チームメンバー全員が迷わず使えるという大きなメリットがあります。

LAMBDAヘルパー関数と連携して真価を発揮する

LAMBDA関数が最も威力を発揮するのが、Googleスプレッドシートに用意された「LAMBDAヘルパー関数」と連携するときです。
配列(範囲データ)を行ごと・要素ごとに自動走査し、1つのセルから一括で計算結果を展開(スピル)させることができます。

LAMBDAヘルパー関数一覧マップ

▲ LAMBDAと組み合わせて使う代表的な配列ヘルパー関数群

代表的なヘルパー関数と活用例:

  • 「MAP関数」:配列の各要素を1つずつ取り出し、LAMBDAで変換した同じサイズの配列を出力する(例:=MAP(A2:A10, LAMBDA(val, val * 1.1))
  • 「BYROW関数」:複数列の範囲を行ごとにまとめ、1行単位で集計・処理する(例:=BYROW(A2:C10, LAMBDA(row, SUM(row)))
  • 「SCAN関数」:配列を先頭から順に走査し、累計値や推移データを配列として出力する
  • 「REDUCE関数」:配列全体の値を畳み込み、最終的な単一の値(総計やテキスト連結)に集約する

ヘルパー関数の中でLAMBDAを使う際は、後ろに (...) を付ける必要はありません。ヘルパー関数自身が範囲の各要素を順番にLAMBDAの引数へ自動的に渡してくれるためです。

💡 あわせて読みたい実践編:

MAP関数とLAMBDA関数、さらにSUMIFSを組み合わせて複数条件の集計を1セルで自動展開する高度な実践テクニックについては、以下の解説記事で詳しくご紹介しています。
スプレッドシートのMAP×LAMBDA×SUMIFS!全引数の意味と誕生背景【実践編】

LAMBDA関数を使用する際の注意点

LAMBDA関数を記述する際に初心者がつまずきやすい注意点をまとめました。

記述時のチェックリスト:

  • 「引数名にセル番号や関数名を使わない」:仮引数名に「A1」「B2」などの既存セル名や「SUM」「IF」といった予約語を使うとエラーになります。「x, y」や「price, rate」など分かりやすい英単語を指定しましょう。
  • 「定義した引数の数と渡す値の数を一致させる」:仮引数を2つ定義した場合は、呼び出し時にも必ず2つの引数を渡す必要があります。不足や超過があるとエラーになります。
  • 「単体テスト時は末尾のカッコを忘れない」:セルに直接LAMBDAを書く場合は、末尾に (値1, 値2) を付けないと「#VALUE!」エラーになります。

まとめ

本記事の要点まとめ:

  • LAMBDA関数は、スプレッドシート内で独自の計算ロジックを変数を使ってスマートに定義できる関数である。
  • 単体でセルに入力してテストする場合は、末尾に (値1, 値2) を添えて実行する。
  • 「名前付き関数」に登録することで、GAS不要の高速な自作関数として共有・再利用できる。
  • MAPやBYROWなどのヘルパー関数と組み合わせることで、1セルからの動的な配列集計が実現する。

LAMBDA関数をマスターすることで、長大で分かりにくかったスプレッドシートの数式を美しく整理し、業務効率化と保守性を飛躍的に高めることができます。ぜひ日々のデータ集計やシート設計に取り入れてみてください。


eguchi.netをもっと見る

購読すると最新の投稿がメールで送信されます。