


毎日、同じ数式を何度もコピペ(コピー&ペースト)していませんか?
「税率計算」や「マージンの算出」、「四半期区分」の算出など…。売上や経理の帳票類を取り扱うビジネス・パーソンであれば、このような計算を、毎日何百行とやっているはずです。
しかし、同じ数式をセルごとにコピペして調整をくり返し、修正モレや入力ミスをしてしまった経験はありませんか?
Excelをビジネス活用する時にまず考えるのが、”自動化”や”省力化”のこと。ひと昔前ならば、”Excel業務の自動化”といえば、マクロ、もしくはVBAプログラミング一択であった時代がありました。
しかし、現在はOffice Scriptsという選択肢もあり、せるワザで以前ご紹介したLAMBDA関数などを活用しても、シンプルな自動化には充分に対応可能です。
そこで本記事では、”Excel業務を自動化する”という前提に対して、どの手段を使うべきかの選択基準を示し、Excel関数(LAMBDA関数)だけでも、自動化を充分実現させられる領域がある事例などを、改めてご紹介します。
VBA・Office Scripts・LAMBDA関数 3手法の強みや、使い分けを解説
前章でも言及したとおり、2021年にOffice Scriptsが一般公開されるまでは、”Excel業務の自動化”といえば、ほぼマクロ、もしくはVBAの一択でした。その翌年(2022年)には、自作関数を容易に作成できるLAMBDA関数が正式リリースされ、業務自動化のための選択肢は、急速に広がりました。
※LAMBDA関数と同年(2022年)に一般公開されたChatGPTなど、”生成AIによる自動化”という観点も、もちろん忘れてはいけません。ただし、AI領域でカバーできる範囲はとても幅広く、奥深いので、本記事内で同列に取り扱うことはせず、別テーマで、後日改めて事例紹介させていただきます。
それでは、VBAとOffice Scripts、LAMBDA関数という3手法について、それぞれの使い分け基準を、どのように考えたらよいでしょうか?
(1)VBAが向いている場面
複雑な操作の自動化:
複数シート/複数ファイルにわたる帳票の一括作成や送信など、
ワーク・フロー全体の自動化
外部連携:
DB・API・Webなどとの連携や、
ローカルファイルへの入出力が必要な場合
旧バージョン対応:
Excel 2019 以前など、LAMBDA関数非対応の環境で自動化を進める場合
(2)Office Scriptsが向いている場面
クラウド自動化:
Power Automate などと連携し、
Formsからの回答を Excel に転記するなど、チーム連携が必要な場合
Web版Excel対応:
Windows/Mac/Web横断で、同じ処理を実行したい場合
定型の前処理:
毎週の表スタイル統一、数式追加、並べ替えやフィルター適用など、
反復作業の標準化
(3)LAMBDA関数が向いている場面
計算ロジックの標準化:
税率計算やマージン、成長率(CAGR)など、
同じ計算をひんぱんに行う場合の自動化
数式の一元管理:
長い数式やコピペだらけのシートを、1 箇所で管理したい場合
マクロ禁止環境:
セキュリティポリシーでマクロ実行が制限される共有ブックやTeams環境など
↑ 特に、Microsoft Office各ソフト上で、”原則マクロ・ブロック”がデフォルト化されつつある昨今、”VBAを使わないExcel業務の自動化”の必要性にせまられるビジネス・パーソンも多いのではないでしょうか?
そこで次章では、おもにLAMBDA関数を活用して、VBAを使わずにExcel業務を自動化させるアイディアをご紹介します。
LAMBDA関数活用による、Excel業務の自動化3アイディア
前章では、LAMBDA関数をVBAやOffice Scriptsと同列に紹介しましたが、この関数は、「ボタンを押して何かを操作する」ための機能ではありません。
入力されたデータに対して、決められたルールで自動計算してくれる機能です。それでは、この自動計算を”Excel業務の自動化”に役立てる3つのアイディアについて、くわしく見てみましょう。
事例1:請求書や売上表の税込価格を一括計算する
最初の事例は、請求書や売上明細における税込価格の計算です。
商品単価やサービス料金がA列に入力されており、B列に税込価格を表示するとします。単純な計算であれば、次のような数式で対応できます。
=ROUND(A2*(1+10%),0)
しかし、実際の業務では、単に税率をかけるだけではありません。
・税率が商品区分によって異なる
・端数を切り捨てるか、四捨五入するかが決まっている
・軽減税率の対象商品がある
・社内ルールとして特定の単位に丸める必要がある
・請求書ごとに計算方法が微妙に異なる
このような条件が加わると、数式はどんどん長くなります。担当者が数式をコピーして使ううちに、ある行だけ税率がちがう、端数処理が抜ける、といったミスがおこります。
そこで、たとえば次のようなLAMBDA関数を作成してみてはどうでしょうか?
=LAMBDA(price,rate,ROUND(price*(1+rate),0))
ネームマネージャ(名前管理器)で、この関数にTAXPRICEという名前を付けます。すると、シート上では次のようによび出せます。
=TAXPRICE(A2,10%)
この方法の利点は、税率計算のルールを1箇所に集約できることです。端数処理を切り捨てに変更したい場合も、各セルの数式を修正するのではなく、TAXPRICE の定義を変更すればすむのです。
さらに、商品区分に応じて税率をきりかえる関数へ発展させることもできます。
=LAMBDA(price,category,ROUND(price*(1+IF(category=”軽減“,8%,10%)),0))
呼び出し側は、次のようになります。
=TAXPRICE(A2,B2)
このように、複雑な計算ルールを関数名の中にかくすことで、利用者は「何を計算しているか」を理解しやすくなります。数式をコピーする作業をへらしながら、計算ルールの統一も実現できてしまうのです。


事例2:営業データから評価ランクを自動判定する
2つ目は、営業成績や案件管理表における評価判定です。
営業部門では、売上金額、粗利率、訪問件数、受注件数などをもとにして、担当者や案件をランク分けすることがあります。たとえば、売上金額に応じて次のような評価を行うとします。
・100万円以上:A
・50万円以上100万円未満:B
・50万円未満:C
通常のワークシート関数であれば、次のような数式が考えられます。
=IF(A2>=1000000,”A”,IF(A2>=500000,”B”,”C”))
判定条件が2つ程度なら問題ありません。
しかし実務では、売上だけでなく粗利率や受注件数も条件に加わることがあります。
=IF(AND(A2>=1000000,B2>=30%),”A”,IF(AND(A2>=500000,B2>=20%),”B”,”C”))
このような数式が複数列にコピーされると、条件の意味がわかりにくくなります。また、評価基準を変更する際、どのシートのどの数式を修正すべきか、確認するだけでも時間がかかります。
そこで、判定ロジックをLAMBDA関数にまとめてしまうのです。
=LAMBDA(sales,margin,
IF(AND(sales>=1000000,margin>=30%),”A”,
IF(AND(sales>=500000,margin>=20%),”B”,”C”)
)
)
この関数に SALESRANK という名前をつければ、シート上では次のように記述できます。
=SALESRANK(A2,B2)


この形なら、セルの数式を見ただけで「売上と粗利率から営業ランクを判定している」と読み取れます。評価基準を変更する場合も、ネームマネージャ(名前管理器)に登録した定義を確認すればよく、複数シートにちらばったIF関数をさがしまわる必要がありません。
この事例で重要なのは、LAMBDA関数が評価基準そのものを決定するわけではないという点です。基準を決めるのは会社や部門です。LAMBDA関数は、その基準をExcel上で一貫して運用するための仕組みなのです。
事例3:顧客コードや商品コードの表記を統一する
3つ目は、データ整理や名寄せを自動化させるケースです。
たとえば、複数の部署や取引先から集まったExcelファイルを統合することがあります。その際、次のような表記ゆれが発生していませんか?
・半角・全角が混在している
・前後に不要なスペースがある
・ハイフンの有無が異なる
・顧客コードの桁数が統一されていない
・空欄や「-」などの例外値がまざっている
たとえば、顧客コードを「英字3文字+数字6桁」の形式にそろえるとします。個別の関数を組み合わせると、次のような数式になるかもしれません。
=IF(A2=””,””,UPPER(SUBSTITUTE(TRIM(A2),”-“,””)))
さらに、桁数をそろえる、特定の文字をおきかえる、エラー値を除外するといった処理を追加すると、数式は急速に複雑になります。
そこで、コード整形用の関数を作成するのです。
=LAMBDA(code,
IF(code=””,””,
UPPER(SUBSTITUTE(TRIM(code),”-“,””))
)
)
名前を NORMALIZECODE とすれば、次のように利用できます。
=NORMALIZECODE(A2)
データをとり込むたびに同じ整形処理をおこなう担当者にとって、これは大きな省力化になります。
さらに、部署名や商品カテゴリの表記統一にも応用できます。
=LAMBDA(text,
SWITCH(
TRIM(text),
“営業部”,”営業”,
“営業本部”,”営業”,
“販売部”,”営業”,
“経理部”,”経理”,
“総務部”,”総務”,
TRIM(text)
)
)
この関数を DEPTNAME として登録しておけば、複数のデータ表で同じ変換ルールを使えます。


しかし、数万件のデータを毎日一気にとり込み、ファイル保存やメール送信まで自動化したい場合には、LAMBDA関数だけでは不十分です。その場合は、Power Query、Office Scripts、VBAなどとの組み合わせを検討すべきです。
たとえば、次のように役割を分担できます。
・Power Queryで複数ファイルを取り込む。
・LAMBDA関数でコードや名称を統一する。
・Office Scriptsで表の整形や更新処理を実行する。
・Power Automateで定刻実行や通知を行う。
・ローカルファイル操作や複雑な帳票作成にはVBAを使う。
このように、LAMBDA関数は単独ですべてを自動化するものではありません。データを「どのように変換するか」という計算部分を担当する部品として考えると、ほかの自動化手段と組み合わせやすくなるのです。
まとめ:自動化の第一歩は、まず「関数で済むか」を考えること 自作関数LAMBDA活用で、コピペ地獄から脱出しましょう!
Excel業務を自動化しようとすると、すぐにVBAやOffice Scriptsを思いうかべる人も多いでしょう。しかし、すべての自動化にプログラミングが必要なわけではありません。
同じ計算をくり返すだけなら、まずはLAMBDA関数を検討できます。税込価格、営業評価、コード変換など、入力値に対して一定のルールで結果を返す処理であれば、自作関数として整理できます。
LAMBDA関数を使う最大のメリットは、数式を単に短くすることではありません。業務ルールを1箇所に集約し、同じルールを誰でも同じように使える状態にすることです。これによって、コピペによる修正モレを防ぎ、数式の可読性と保守性を高められます。
一方、ファイルの作成・保存、シート操作、メール送信、外部システムとの連携まで必要になる場合は、Office ScriptsやVBAの領域です。クラウドやチームで定期実行するならOffice Scripts、デスクトップ上で複雑な処理やローカルファイル操作を行うならVBAというように、目的に応じて選択しましょう。
大切なのは、「一番高機能な手段を選ぶこと」ではなく、「必要十分な手段を選ぶこと」です。



まずは、日々の業務で何度もコピーしている数式を1つさがしてみてください。その数式をLAMBDA関数として名前づけし、=関数名(引数) の形でよび出してみることから始めましょう。関数だけで解決できる小さな自動化をつみかさねることが、VBAやOffice Scriptsを含む、より大きな業務改善への第一歩になるんですよ。
■ 「VBA健康診断」始めます。
私たちが長年培ってきた「現場の知見」を掛け合わせ、「VBA健康診断・仕様書化パック」という新サービスを正式にリリースしました。
- 仕様書のないマクロのドキュメント化
- 隠れたバグや「2025年の崖」リスクの洗い出し
- 将来的なWebシステム化への移行ロードマップ作成
これらを、従来の常識を覆すスピードと価格で提供します。
\ まずは無料診断から /















