こんにちは。かづきです。
今回は、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いただければ嬉しいです!