[Excel365]Lambda関数【実践編:組み方】

記事
学び
こんにちは。かづきです。

今回は、Lambda(ラムダ)関数で便利な関数を作っていきたいと思います。
Lambda関数を使った組み方紹介といった意図もあるので、わかりやすく簡単に、「税込価格」を出す関数でも作りましょうかね。

※ちなみに、Lambda関数の使い方紹介をメインとしている為、当記事において少数誤差の処理&説明やエラー処理は省いています。予めご了承ください。

■STEP1:どんな関数を作りたいかを考える

どんな物が欲しいのか、どんな事をしたいのか。
はじめに、ビジョンをはっきりさせることは重要です。(自分で作る分には、後からどんどん追加しちゃってもいいですけどね。)

今回は↓「税込価格」という事で、とりあえずこんな所でしょうか。
(1)税抜価格が書かれているセルor範囲に対して一律で税込価格を出したい。
(2)小数点以下は、切り捨てたい。(※正の数のみを扱うものとする)
(3)税率は、簡単に変更できるようにしたい。
(4)できれば税率指定は数字だけでしたい。(面倒なので毎回”%”とか書きたくない。)
(5)税率を指定しない場合は、自動的に「10%」で計算してほしい。

※ちょっと長くなりそうなので、(5)についての詳細は説明は次回記事予定です。

■STEP2:通常の数式で考えてみる

まずは、希望に沿って順番に通常の数式を組んでいきましょう。
(1)税抜価格が書かれているセルor範囲に対して一律で税込価格を出したい。
税込み価格の計算式は色んな書き方が出来ますが、「A1」セルに税抜き価格が書いてあって、10%の消費税がかかるなら、こんな感じでしょうか。

【数式例1】=A1*110%
【数式例2】=A1*1.1

「A1」の部分を範囲に変えれば、スピル対応バージョンのExcelなら、範囲すべてに対して一律で結果をだしてくれるので、(1)はOKかなと思います。
(4)できれば税率指定は数字だけでしたい。(面倒なので毎回”%”とか書きたくない。)
ちょっと順番が前後しますが、(4)にこういう希望もあり、式中に”%”がすでに入っている【数式例1】で進める事にします。 
(2)小数点以下は、切り捨てたい。(※正の数のみを扱うものとする)
小数点以下は切り捨て(正の数のみ)なので、INT関数ですっきり切り捨てる事にします。ROUNDDOWN関数でもOK。そこは目的に応じてお好みで。

【数式例1】=INT(A1*110%)
【数式例2】=ROUNDDOWN(A1*110%,0)

これで(2)もOKですね。【数式例1】で進めることとします。
(3)税率は、簡単に変更できるようにしたい。
「=INT(A1*110%)」のままだと、税率8%に変えるときに何かと不便そうです。A1セルの110%は、つまりA1+A1*10%なので分解しておきます。

【数式例】=INT(A1+A1*10%)
(5)税率を指定しない場合は、自動的に「10%」で計算してほしい。
まぁこれはまだ、どうしようもないので後回しです。
Lambda式に変換してからにしましょう。(詳細は次回記事予定です。)

■STEP3:変動させたい部分を文字(変数)に変換する

Lamda関数の式というのは、中学数学の初期に習う「x」「y」などが入った文字式のような形状にすることです
(x+3、x*yなど。※ただし、普段の式と同様に”*”などは省けません。)
関数として使う時に、自由に変えたい部分は文字(変数)に変えておきます。

先ほどの式「=INT(A1+A1*10%)」を例にあげると、「A1」の部分と、「10」の部分を自由に変えたいですよね。

なので、例えば仮に「A1」の部分を「x」を入れるとすれば
「=INT(x+x*10%)」となります。
元々「A1」と2か所書いてあったので、どちらも同じ文字「x」を入れます。
もし、x=A1セルなら、「=INT(A1+A1*10%)」って事になりますよね。

同じように「10」の部分も「y」を入れると
「=INT(x+x*y%)」となります。
※「10」は「A1」とは別物なので、違う文字を入れる必要があります。

■STEP4:Lamda関数に当てはめる

=LAMBDA 関数 ([parameter1, parameter2, ...],calculation) (関数呼び出し)

※Microsoft公式「Lambda関数」紹介ページより。
すでにお気づきになられたかも知れませんが、先ほどのSTEP3で変換した「x」や「y」の変数が、Microsoft公式で説明されている式の「parameter(パラメーター)」の部分となります。

もはや、Lambda関数に当てはめた式を見てもらった方が早いと思います。
=LAMBDA(x,y,INT(x+x*y%))(A1,10)
↑セル内でそのまま計算する場合は、こういう感じで書きます。

【前半カッコ部分】
=Lambda(変数1, 変数2, 文字式 )
※変換した文字が1つなら「=Lambda(変数,文字式)」となります。

【後半カッコ部分】
( 文字1に代入するセル番地or値など,文字2に代入するセル番地や値など )
=LAMBDA(x,y,INT(x+x*y%))
↑「名前の定義」で登録する場合は、この前半の部分だけでOKです。

例えば、この式を「税込」という名前で登録したとすれば・・・
=税込(A1,10)
↑こんな風に好きなセルへ入力すれば、「A1」セルの数値に「10」%の税率をかけた数値を表示してくれるようになります。

※パラメーターとして入れる文字や、名前の定義への登録については、前の記事の「■わからんポイント3:パラメーターって何を書けばいいの?」をご覧ください。

■あとがき

案ずるより産むが易し!
もしこの記事を読んで「あ、何となくわかったかも!」と思った365ユーザーさんがいらっしゃるのなら、ぜひLambda関数にチャレンジしてみてくださいね。

次回、より融通の利く関数にするため、一部パラメーターの省略の仕方などを紹介したいと思います。
(そもそも、この記事自体読んでもらえるのか・・・?)

お仕事のご相談はもちろん、記事についてのご意見やリクエストなども、お気軽にDMいただければ嬉しいです!


サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す