って何だ?とりあえず、ややこしくなるだろう消費税率計算を自作関数化して、便利さを実感してみましょう.png)

LAMDA(ラムダ)関数、活用してますか?
「これって、超むずかしいExcel関数なんでしょう?」という感想を持たれた方は、Excel感度の高い方ですね。
おっしゃる通り、LAMDA関数を”極める”ことは、かなりハードルが高いです。
そもそも、検索サイトで「LAMBDA関数とは?」と調べて、Microsoft公式サポート・ページの内容を読んでみても、よくわからないし…!? 「カスタム関数を作成し、フレンドリ名で呼び出し」って、いったい何?
「LAMBDA関数は、LAMBDAヘルパー関数とセットで真の力を発揮する」とか言われたり、「LAMDAは再帰呼び出し(Recursive Call)に使うと便利ですよ」なんて言われると、プログラマでない普通の事務屋さんは、もう完全に「? ? ?」ですよね。
でも、使いはじめは、そんなに難しく考えなくてOKです。
以前のExcelでは、VBAのFunctionプロシージャを使って定義しなければならなかった「Excel自作関数」を、VBA無しで作成できる”関数”だと考えれば、ちょっと関心がわきませんか?
今回は、ややこしくて奥深いLAMBDA関数の”入り口”について、ごくシンプルに、これまたややこしくなりそうな消費税率計算の事例をサンプルとして、解説します。
LAMBDA関数と名前の定義をセットで使うと、自分の好きな名前でExcelブック内独自関数が作れます
LAMBDA関数の基本構文は、次の通りです。
=LAMBDA([パラメータ1, パラメータ2, …,] 計算)
一番シンプルな使い方としては、[パラメータ1, パラメータ2, …,] 部が省略可能ですから、パソコンIME(Input Method Editor)のかわりに、同一Excelブック内で使用できる長めの定型文を関数化しておく、という手があります。
ただ、セル上に文字列だけのLAMBDA関数を入力しても #CALC! エラーが出ます(計算すべき引数部分で、何も計算されていない関数式ですからね)。


それでは、Excelの「関数に独自の名前を付ける」機能を使って、このLAMBDA関数式の文字列を、別名で定義してみるとどうなるでしょうか?
[数式]→[名前の定義]→[新しい名前]ダイアログボックスで、参照範囲にLAMBDA関数式を入れてみましょう。


このExcelブック内では、任意のセルへ
=定型文1()
というオリジナル関数式を入力すると、あらかじめLAMBDA関数式で定義されていた定型文字列が呼び出されます。


よく使用する定型文を、このようにいくつかオリジナル関数化しておくだけでも、地味に省力化は進みます。
しかし、LAMBDA関数は”計算式”を独自関数化するためのものですから、せっかくなのでLAMBDAに計算させてみましょう。
消費税込額計算のLAMBDA関数を作ってみます。
=LAMBDA(price,price*1.1)
これを、先の定型文と同じように、「消費税込」というオリジナル関数名で保存します。


このExcelブック内では、
=消費税込(100)
に対しては110が、
=消費税込(18351)
に対しては20186という計算結果が返されます。
しかし!!
これだけのために要りますか、LAMBDA関数?
これだけなら、多分要らないと思います。調べたい数値に「かける1.1」すればよいだけですからね。
ところが、消費税は今後どんどん”ややこしく”なりそうです。
現在、食品の持ち帰り購入には軽減税率8%が適用されており、それ以外にも、切手・印紙類や学校授業料のように、”非課税品目”があります。
今後、消費税そのものが「さらに上がる」かもしれませんし、もしくは”期間限定で”割り引かれたり、ゼロになったりする可能性も出てきました。間違ってはいけないこのような複雑な税額計算に関しては、あらかじめ正しいルールを独自関数化しておくことをおすすめします。
たとえば、先に「消費税込」と名づけたオリジナル関数を「標準税率」と改名し、それ以外に=LAMBDA(price,price*1.08)の計算式を「軽減税率」とします。
それ以外に、期間限定の減税施策が実行された場合には「特別税率」を、非課税品目については「非課税」という関数を呼び出すことで、税額計算ミスを極力抑えていく運用ではいかがでしょうか?
Excelの「名前の管理」へ定義されたオリジナル関数は、VBAの簡単なプログラムを組めば(あるいは公開記事のソースなどを借りてくれば)、エクスポートやインポートも可能になりますので、個人で or 部署内でライブラリ的に再利用することも可能になります。
LAMBDA関数と名前の定義で業務効率化を目指すメリットとデメリット
LAMBDA関数と名前の定義を仕事に使うことには、以下のようなメリットがあります。
<属人化を低減し、業務内容や表現方法を標準化できます>
「この部署では、利益率はこう計算している」「会社名は、このような方法で正規化する」といった業務ロジックを、自作関数として一元管理できます。
チーム全員が同じLAMBDA関数を使えば、担当者ごとの微妙な数式の違いをおさえて、標準化された計算ルールを守りやすくなります。
<ミスが削減されて、業務用資料の保守性が向上します>
複雑な数式を全ワークシートに展開していると、”どこか1つのセルだけ修正漏れ”というようなエラー・リスクがつきまといます。
しかし、もし数式を自作関数化しておけば、定義を1箇所修正するだけで、資料全体を一括更新できます。
特に、「IF の入れ子+参照の組み合わせ」など、読みにくい数式を減らすことができるため、数式の読み間違いや、編集時の誤操作を大幅に減らせる可能性があります。
<VBAなしで、高度な処理を実現できます>
LAMBDA関数では、複雑な業務ロジックを、VBAを使わずセル計算の枠内で表現できるため、「マクロ禁止」の環境でも、自動化の幅を広げられます。
また、既存関数にはない独自のロジック(例:表記ゆれの修正ルールや、社内独自の判定基準など)を、関数として組み込めます。
このように、何かとメリットが多いLAMDA関数にも、デメリットはあります。たとえば、
<数式が複雑化しやすくなります>
LAMBDA関数では、かなり高度な処理まで1本の式で実装できるため、数式が長くなり、読み解きが難しくなります。
Excelには、「この数式を自然言語で説明する」機能がないため、コメントや仕様書をきちんと残しておかないと、「ブラックボックス関数」が出来上がる恐れがあります(生成AIに”自然言語で意味を質問する”という方法もありますが、それでいつも正しい回答が得られる保証はありません)。
<使用可能バージョンに制約があります(古いExcelでは使えません)>
LAMBDA関数は、Microsoft 365系の比較的新しいバージョンのExcelにのみ搭載されています。
社内に古いExcel環境のPCが混在している場合には、LAMBDA関数を前提として作成したブックを共有できないケースがありえます。
<あっという間に関数が乱立します。整理・管理が難しくなります>
安易に自作関数を増やすと、「どのブックに何の関数が入っているのか」が分からなくなり、名前の重複や、仕様の不整合を引き起こします。
複数人で共有する場合などには、「命名ルール」「仕様書」「エクスポート/インポートの手順」など、簡単なガイドラインを決めておくことが重要となるでしょう。
まとめ;まずはカンタンな税額計算などから、自分オリジナルの関数を作る便利さを体感してみましょう
LAMBDA関数や、いっしょに使うことができる”LAMBDAヘルパー関数”などの使い方を極めると、Excelだけで、かなり高度なデータ分析を進めることができます。しかし、そのように使おうとするなら、複雑な関数構文や用例をしっかり勉強し、きちんと仮説も立てて数式を作る必要があります。
しかし”難しそう”と尻込みするくらいなら、まずはカンタンな「消費税込額計算(かける1.1、もしくは1.08)」だけでも、関数名を自分で定義して、「マイ関数」にしてみませんか? LAMBDA+名前の定義って、こういう使い方をするんだ〜!ということが、よく理解できるようになります。



LAMBDA関数の業務活用には、前章で挙げたように、メリットばかりでなくデメリットもありますが、まずはカンタンな事例から「マイ関数」化を試してみて、ぜひご自身の業務にうまく活用できそうかどうか、評価してみてください。特に、消費税計算が今よりもっと複雑怪奇になってしまう前にね。
■ 「VBA健康診断」始めます。
私たちが長年培ってきた「現場の知見」を掛け合わせ、「VBA健康診断・仕様書化パック」という新サービスを正式にリリースしました。
- 仕様書のないマクロのドキュメント化
- 隠れたバグや「2025年の崖」リスクの洗い出し
- 将来的なWebシステム化への移行ロードマップ作成
これらを、従来の常識を覆すスピードと価格で提供します。
\ まずは無料診断から /















