どうもYnek0です。
今回は、Googleスプレッドシートの新しい機能、LAMBDA関数についてお話しします。
「LAMBDA関数って何?」って思った方、大丈夫です!一緒に学んでいきましょう。
## そもそもLAMBDA関数とはなにか
LAMBDA関数は、2022年にGoogleスプレッドシートに登場した新機能です。
これを使うと、セル内で直接カスタム関数が作れちゃうんですよ!
今までは、カスタム関数を作るのに、スクリプトエディタを開いてGAS(JavaScript)を書く必要がありました。
でも、LAMBDA関数なら、そんな面倒なことをしなくても、セル内で簡単にカスタム関数が作れるようになったんです。
このLAMBDA関数、結構便利で複雑な計算や条件分岐を、たった1つのセルで完結させられてしかもそれがプログラミングの知識がなくても使えるんです。
つまり、誰でも自分だけの関数が作れるようになったってことなんです。
これで、スプレッドシートの可能性が無限に広がったと言っても過言ではありませんね!
## LAMBDA関数の基本的な使い方と構文
さて、LAMBDA関数の基本的な使い方と構文について見ていきましょう。
LAMBDA関数は、以下の様な構文になります。
=LAMBDA(引数1,[引数2],[引数x],処理)(引数1実数,引数2実数,...[引数x実数])
LAMBDA関数のカッコの中に、まず引数の名前を書き、そのあとにカンマを置いて、実行したい処理を書きます。
例えば、2つの数字を足す簡単な関数を作るなら、こんな感じです:
=LAMBDA(a,b, a+b)(3,4)
ここで、aとbが引数で、a+bが実行する処理です。
引数1が3、引数2が4で3+4と言う処理が行われ結果=7が出力されます。
引数っていうのは該当する関数に入力される値の事です。
### LAMBDA関数と別の関数を使った例
もう少し複雑な例も見てみましょう。条件分岐を含む関数を作るならこうです:
=LAMBDA(x, IF(x>0, "正", IF(x<0, "負", "ゼロ")))(1)
この関数は、数値が正か負かゼロかを判定します。
xが引数で、IFステートメントで条件分岐を行っています。
LAMBDA関数の魅力は、こうした複雑な処理も1つのセルで完結できることなんです。
従来の方法だと、複数のセルや関数を組み合わせる必要があったものが、LAMBDA関数なら1つにまとめられるんですよ。結構便利でしょう?
## LAMBDA関数の実践的使い方
LAMBDA関数の実践的な使い方を見ていきましょう。まずは、配列を扱う例です。
例えば、以下の様な表があったとします。
配列の各要素を2倍にする関数を作りたいとします。こんな感じになります:
=LAMBDA(arr, MAP(arr, LAMBDA(x, x*2)))(A1:B5)
この関数では、MAP関数とLAMBDA関数を組み合わせています。
arrという配列(セルの選択範囲)を受け取り、その各要素(A1~B5の値)xに対して2倍の処理を行います。
C1に上記関数を入れた結果以下の様に処理が行われます。
このLAMBDA関数とMAP関数と組み合わせれば、この記述1つで一度に多くのセルに適用できます。
=LAMBDA(score, MAP(score,LAMBDA(x,IF(x>=60, "合格", "不合格"))))(A1:A100)
IF関数をさらに増やし複数の条件を一度に判定する関数を作ってみましょう。
例えば、テストの点数から成績を判定する関数です:
=LAMBDA(点数,
IF(点数>=90, "A",
IF(点数>=80, "B",
IF(点数>=70, "C",
IF(点数>=60, "D", "F")))))
これを使えば、=LAMBDA(点数, ...)(85) と書くだけで、簡単に成績が判定できちゃいます。
複数の条件を組み合わせた関数も作れます。例えば、年齢と収入から税率を計算する関数なら:
=LAMBDA(age, income,
IF(age<20, 0,
IF(income<1000000, 0.1,
IF(income<5000000, 0.2, 0.3))))
(20,1000000)
このように、LAMBDA関数を使えば、複雑な条件分岐も1つの関数にまとめられるんです。
従来なら複数のIFステートメントを使う必要があった処理も、スッキリと書けるようになりました。
それ以外にも様々な関数と親和性が高く、LAMBDA関数の応用範囲は本当に広いんです。
データ分析、財務計算、成績処理など、様々な場面で活躍します。自分の仕事や趣味に合わせて、オリジナルの関数を作ってみてください。
## LAMBDA関数のエラーについて
LAMBDA関数、便利だけど使い方を間違えると思わぬトラブルに遭遇することもあるんです。
ここでは注意点とトラブルシューティングについてお話しします。
まず、最も気をつけたいのが「構文エラー」です。
LAMBDA関数は、カンマやカッコの位置が重要なんです。
### #ERROR!について
基本的な構文の間違いが指摘されています。
良くあるのが、=LAMBDA(x, y x + y)(x値,y値)というように、引数の間のカンマを忘れると、エラーになっちゃいます。
正しくは=LAMBDA(x, y, x + y)(x値,y値)ですね。構文をしっかり確認する習慣をつけましょう。
### LAMBDA 関数の後には、実際の値を含む呼び出しを続けて指定します(無限ループ)
次に注意したいのが「無限ループ」です。
LAMBDA関数内で自分自身を呼び出す再帰的な処理を書くと、無限ループに陥る可能性があります。
例えば、=LAMBDA(x, IF(x>0, LAMBDA(x-1), x))(1)のような関数は、終了条件が明確でないため、無限ループになる可能性があります。
再帰的な処理を書く場合は、必ず終了条件を設定しましょう。
### パフォーマンスの問題
また、「パフォーマンスの問題」にも気をつけましょう。LAMBDA関数は便利ですが、複雑な処理を書きすぎると、計算に時間がかかってしまうことがあります。特に大量のデータを扱う場合は要注意です。
処理を分割したり、必要最小限の処理にとどめるなど、工夫が必要です。
トラブルシューティングのコツは、まず「エラーメッセージをよく読む」ことです。Googleスプレッドシートは、エラーの原因を具体的に示してくれることが多いんです。例えば、「#ERROR!」と表示された場合、セルをクリックすると詳細なエラーメッセージが表示されます。これを読めば、問題の所在がわかることが多いんですよ。
それでも解決しない場合は、「関数を分解する」のがおすすめです。
複雑なLAMBDA関数は、いくつかの単純な関数に分けてみましょう。
そうすれば、どの部分でエラーが起きているのかが特定しやすくなります。
LAMBDA関数は強力なツールですが、使いこなすには少し練習が必要です。
でも、これらの注意点を押さえておけば、トラブルも怖くありません。
エラーが出ても、落ち着いて対処していけば、きっと解決できます。