![見出し画像](https://assets.st-note.com/production/uploads/images/136066431/rectangle_large_type_2_3b6ae927fcf4c924bfb1f5b5d65fd9a9.png?width=1200)
【Microsoft 365】年間サブスク買っちゃった…ので
何をとち狂ったのか
自宅PCでMicrosoft 365 Personal の1か月無料試用版をゲットしようとして、よりによって1年版を買っちまったようなのね。
以前設定したInsider channel設定も有効で、Python for Excelが使えるし。
1年間修業に励めという神からのお達しかな…。
この前の土日で別途Python開発環境を設定したのに。
まぁいいや。あるものは使い倒そう。
せっかくなので、LAMBDA関数を使う
(いまさらながら)ご存じの通り、Microsoft 365で公式に使える関数の一つにLAMBDA関数がある。
これでExcelはチューリング完全になった、とMSの中の人はドヤっていたが、要はこれをうまく使うと関数が自作できるよ、とのこと。
基本
たとえば1変数関数$${f(x)=2x+1}$$は、
=LAMBDA(x,2*x+1)
この形では関数に名前がない(無名関数)、引数を後ろに付けることで、セル上で計算できる。
=LAMBDA(x,2*x+1)(5)
fという名前で引用したい場合は、Excelの数式タブ-名前の管理で、以下のようにする。fの通用する範囲はブック全体またはシートを指定にできる。
![](https://assets.st-note.com/img/1712150478807-M3xJO1cwTu.png)
2変数関数の例。直角三角形の斜辺を求めたい場合
=LAMBDA(x,y,SQRT(x^2+y^2))
同様に、pythagorasという名前を付けて
![](https://assets.st-note.com/img/1712230851005-4c1bYd5ip9.png)
簡単に使うことができる。
![](https://assets.st-note.com/img/1712231192870-2ME9gp3kxf.png)
再帰呼び出しを試す
次に再帰を使って階乗を求めてみる。
定義通り名前に登録する(すでにあるFACT関数と被らないようmyfactとする。
![](https://assets.st-note.com/img/1712231998762-OaYHOFLGz6.png)
![](https://assets.st-note.com/img/1712232038583-mcnNJZTmrm.png)
以外と楽勝だった(ただし下記「注意点」を参照)
2変数の再帰といえばやっぱりアッカーマン関数でしょう。
・・・と、ドヤ顔で書こうとしましたが今の環境では動かなかったので以前Quoraに書いたコメント貼ってお茶濁します(別HNです)
注意点
今日スマホのExcel 365を初めて触ったのですが、LAMBDA関数は使えるけれど「名前の管理」使えないですね・・・。
再帰呼び出しを試そうと思ったのですが、LAMBDAのみ使ってやるにはラムダ計算をガチで理解する必要があります。
https://zenn.dev/hellorusk/articles/copy-from-blog-20200102
上記事のZコンビネー夕を使う例がありましたが、このおっさんに理解できる日は来るのだろうか?