ソフトウェア

Excelの数式言語で独自のカスタム関数を定義できる「LAMBDA」をMicrosoftが発表


MicrosoftのExcel開発チームが2020年12月4日(金)に、Excelの数式言語を利用して独自のカスタム関数を定義できる「LAMBDA」をベータ版に搭載したと発表しました。

Announcing LAMBDA
https://techcommunity.microsoft.com/t5/excel-blog/announcing-lambda-turn-excel-formulas-into-custom-functions/ba-p/1925546

これまでもExcelを使ってカスタム関数を定義することはすでに可能でしたが、その場合、JavaScriptといった全く異なる言語で記述を行う必要がありました。一方、LAMBDAはExcel独自の数式言語でカスタム関数を定義することが可能とのこと。また、1つの関数で別の関数を呼び出すことが可能です。

LAMBDAでは、定義した関数に「MYFUNCTION」となど独自の名前をつけると、シート上でMYFUNCTIONと記述するだけで呼び出せるようになります。さらにLAMBDAは再帰可能であり、MYFUNCTIONの定義内でMYFUNCTIONを呼び出すことも可能です。この仕組みにより、以前はJavaScriptなしでできなかったものが構築可能になるとMicrosoftは述べています。

例えば以下のように、ロケーションがエンコードされていてるステーションIDの中からロケーションの値だけを引き出したい場合……


これまでであれば以下のような関数を入力することになりました。ただしこの場合、ロジックにエラーを見つけ、その値を都度手動で修正する必要があり、その過程でミスが発生する可能性が高まります。また、数式の作成者以外が見た時に目的が分かりづらいという問題もありました。

= LEFT(RIGHT(B18、LEN(B18)-FIND( "-"、B18))、FIND( "-"、RIGHT(B18、LEN(B18)-FIND( "-"、B18)))-1)


しかし、LAMBDA関数を使って「GETLOCATION」という名前で以下のような関数を作成すれば、エラーが発生してもたった1箇所を修正するだけでよいとのこと

= LAMBDA(stationID、LEFT(RIGHT(stationID、LEN(stationID)-FIND( "-"、stationID))、FIND( "-"、RIGHT(stationID、LEN(stationID)-FIND( "-"、stationID)) )-1))


実際にLAMBDA関数を使って処理している様子は、以下の画像をクリックするとアニメーションで見ることができます。


また、以下のように追加のロジックを使用して関数を作ることも可能です。

= XLOOKUP(GETLOCATION(B18)、table1 [locations]、table1 [tax])


加えてLAMBDAは再帰が可能なので、以下のように、特定の文字列を削除したい場合には「それ自体を参照する」という関数「REPLACECHARS」を定義することで、「削除対象の文字(illegal characters)が含まれない場合はtextStringに戻り、それ以外はillegalCharsの文字が現れる度に削除する」というIF文を作成することができます。

=LAMBDA(textString, illegalChars,
IF(illegalChars="", textstring,
REPLACECHARS(
SUBSTITUTE(textString, LEFT(illegalChars, 1), ""),
RIGHT(illegalChars, LEN(illegalChars)-1)
)))


LAMBDAで再帰関数を利用している様子は以下の画像をクリックすると見ることが可能です。


なお、LAMBDAを利用するには以下からOffice Insider Programに申し込んでExcelのベータ版にアクセスする必要があります。

Join the Office Insider Program
https://insider.office.com/ja-jp/join/windows

この記事のタイトルとURLをコピーする

・関連記事
「何かが間違っているExcelシート」の問題点を見抜く専門家たちが世界を救っている - GIGAZINE

「Excelのおせっかい」のせいで人間の遺伝子の名前が変更を余儀なくされる - GIGAZINE

Excelで仕事をすばやく効率的にこなすノウハウがてんこ盛りの「『結果を出す人』は、エクセルをどう乗りこなしているのか?」 - GIGAZINE

新型コロナの症例記録1万6000件がExcelのインポートに失敗して一時消失 - GIGAZINE

Excelで「ドラゴンクエストIII」をマクロ言語なしで再現した猛者が登場、実際にプレイする様子も公開中 - GIGAZINE

in ソフトウェア, Posted by logq_fa

You can read the machine translated English article here.