![見出し画像](https://assets.st-note.com/production/uploads/images/96566583/rectangle_large_type_2_cb258c7975cfddbac57897e62e3633b4.png?width=1200)
Googleスプレッドシートで名前付き関数を作ってみる!
以下の記事で、Google スプレッドシートのカスタム関数について紹介しました。
結局のところ…
カスタム関数は、Google スプレッドシートで GAS で作成した関数(プログラム)の処理結果を、スプレッドシートの組み込み関数のように利用できるものです。プログラミング経験のない人にとっては、ちょっとハードルが高いのかもしれません。
そんな人のために用意されているのが、名前付き関数です!
名前付き関数とは?
名前付き関数とは、Google が提供している以下のヘルプ記事で説明されていますが、要約すると、スプレッドシートの数式などを使って、オリジナルの組み込み関数を作れるような感じです。
Googleスプレッドシートのメニューから、「データ」→「名前付き関数」と選択することで設定できます。 ※新しい機能なこともあって、はじめて使うときには図のように New と表示されているかも?
![](https://assets.st-note.com/img/1674779350891-PkbQqO7Ex6.png)
実際に作ってみた
情報が分散しないように、上記の記事で作成した Google スプレッドシートに、名前付き関数も追加してみました。以下の URL にアクセスすることで、自身の Google ドライブにコピーを作成できます。
https://docs.google.com/spreadsheets/d/1zO7D-Pz_z0YALahvXlf7IETNQj01rrvXlMBOPHvrINM/copy
以降の説明については、上記の記事で扱った「エビングハウスの忘却曲線」をもとに、復習する日を算出している例を題材にします。
そもそも、今回の課題は下図のようにセル C2 に入力された「学習日」の値に、
=C$2+1
といった感じで加算するだけで、今回の「名前付き関数」や「カスタム関数」といった機能を使わなくてもいいのかもしれませんが、事例紹介ということでご容赦ください。
![](https://assets.st-note.com/img/1674779769392-swt5hhdhwj.png)
ウィザード形式で作成
はじめて「名前付き関数」を作成する場合、下図のような画面が表示されます。画面下部の「新しい関数を追加」をクリックして、先に進みます。
![](https://assets.st-note.com/img/1674780216504-CUa3WW9M2T.png)
下図のような「新しい名前付き関数」という画面が表示されます。
![](https://assets.st-note.com/img/1674780436476-cf6SJjeKvn.png)
設定する内容は、以下の 4項目。それぞれ、図のように説明されています。
![](https://assets.st-note.com/img/1674780771541-54LeljWt0w.png)
![](https://assets.st-note.com/img/1674780793547-FesgQ0Rhku.png)
![](https://assets.st-note.com/img/1674780818470-ZBImbfyOp9.png)
![](https://assets.st-note.com/img/1674780845241-Wn1Ky62o9G.png)
今回は、それぞれ以下のように設定しました。
関数名
→ EBBINGHAUSCURVE2 ※すべて大文字になります関数の説明
→ エビングハウスの忘却曲線に基づいて、効果的な再学習の日付を返します。引数のプレースホルダ
→ 右端の「⏎」ボタンを使って、date と times の 2つの引数を追加数式の定義
→ 以下のように設定
=if(times=1,date+0,if(times=2,date+1,if(times=3,date+7,if(times=4,date+14,if(times=5,date+30,date)))))
実際の画面は、以下のような感じです。
![](https://assets.st-note.com/img/1674781437767-2k2ZMazx6f.png)
上図の画面で「次へ」を押すと、下図のような関数のプレビュー画面が表示されるので、説明を追加できます。 ※説明は、省略可能です
![](https://assets.st-note.com/img/1674781639245-9azp19TEaB.png)
画面下部の「作成」を押すと、名前付き関数が作成できます。
上記のように説明も入力してあれば、名前付き関数を使用するときに下図のように説明が表示されます。
![](https://assets.st-note.com/img/1674781773228-10Gs5qQo9P.png)
名前付き関数を使ってみる
実際に名前付き関数を使ってみます。
前述の Google スプレッドシートの列 F には、名前付き関数を使って復讐する日を表示させています。カスタム関数を使用した時と同様に、列 B の見出し文字列から何回目の復習であるかを RIGHT 関数で取得していますが、数値として処理するために VALUE 関数で数値化しています。
=EBBINGHAUSCURVE2(C$2,value(right($B4,1)))
上の数式は、オートフィル機能によって数式を設定したかったので、列 B の見出し文字列から 1 ~ 5 を得ているだけで、以下のように単純に 1 ~ 5 の数値を指定しても動作は同じです。
=EBBINGHAUSCURVE2(C$2,2)
![](https://assets.st-note.com/img/1674781933140-qgjomCewSp.png)
結果とすれば、カスタム関数を使用した列 C、単純に日付に加算した列 E、名前付き関数で処理した列 F、はどれも同じ結果が表示されています。
まとめ
名前付き関数とカスタム関数は、いずれもGoogle スプレッドシートが用意している組み込み関数にはないオリジナル関数を作成できます。
簡単に特徴をまとめると、以下のような感じになります。
名前付き関数
スプレッドシートの関数と数式によって作成する
1行の数式として記述する
カスタム関数
GAS(JavaScript)の構文で作成する
複数行にわたって記述でき、コメントも記述可
似たような機能ですが、上記の点を踏まえて、うまく使い分けるといいんじゃないかと思います。
上述したように…
もともとの課題を解決するのであれば「名前付き関数」や「カスタム関数」を使うまでもないのかもしれません。「名前付き関数」「カスタム関数」の紹介ということで、ご容赦ください。🙇♂️