[[20250904113619]] 『LAMBDA関数について教えてください。』(訓練中) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『LAMBDA関数について教えてください。』(訓練中)

表題の通り「LAMBDA」関数の理解に苦しんでいます。

https://qiita.com/automation2025/items/d6dd8a480800a00cb1ae
の第2章はできたのですが、
第1章はわかりません。

「セルに直接入力するか、名前付き関数として定義します。」
と書いてあるので

Sheet1のA1セルを「x」
Sheet1のA2セルを「y」
という様に名前を定義して、
A1セルに任意の数値
A2セルに任意の数値を入れ
A3セルに「=LAMBDA(x, y, x + y)」
と入力したのですが、
「CALC!」というエラー値が出てしまいます。

名前の定義をせずに
「=LAMBDA(x, y, x + y)(A1, B1)」
と入力すれば、A1セルの値+A2セルの値が返ってきます。
また、名前を定義した後、
「=LAMBDA(x, y, x + y)(x, y)」
と入力しても、A1セルの値+A2セルの値が返ってきます。

LAMBDA関数の後ろの「(A1, B1)」の部分は、
LAMDA関数の「x」や「y」に値を代入しているのだろうとは思っています。

しかし、「x」はA1セルの値、「y」はA2セルの値と
定義しているのに、
「=LAMBDA(x, y, x + y)」
が計算できない理由がわかりません。

どなたか解説していただけないでしょうか。
よろしくお願いいたします。

< 使用 Excel:Microsoft365、使用 OS:Windows11 >


 このx,yは、計算式に繋がる変数名という認識ですね
(tkit) 2025/09/04(木) 12:00:25

 =LAMBDA(第一引数,第二引数,第三引数,第一引数+第二引数+第三引数)(1,2,3)

 変数としましたが、引数ですね。
 それぞれのパラメータに名前を付けて、その名前を基に計算式を作るって関数ですね。

 セルの名前定義は関係無いかと。
(tkit) 2025/09/04(木) 12:06:33

 =LAMBDA(x, y, x + y)
 というのはいわゆる無名関数です。
 引数x,yは関数の中だけで通用するローカルなスコープを持つ引数ですから、
 名前定義されているx,yとは無関係です。

 エラーのときの黄色三角のところをクリックしてメッセージを読まれるとよいと思いますが、
 関数だけをセルに代入することはできません。
(xyz) 2025/09/04(木) 12:40:35

 まず、「名前付き関数として定義」するということの、質問者さんの誤解を解いておきましょう

 リボンの[数式]タブの[定義された名前]グループの[名前の定義]
 名前に適当な名前を入れます。 例えば、 ADD と入力します。 
 参照範囲に =LAMBDA(x, y, x + y) と入力して OK

 これで、関数を名前として定義できました。

 そうすると、セルに =ADD(1,3) と入れると、定義した関数の結果が戻ってきます。
 試しに、=ADD( まで打ち込んでみてください。 セルの下に =ADD(x,y) とか小さく表示されませんか?

 先ほどの参照範囲に入れた式を 参照範囲に =LAMBDA(a, b, a + b) とするとどうなるか試して見てください。

 LAMBDA関数
https://support.microsoft.com/ja-jp/office/bd212d27-1cd1-4321-a34a-ccbf254b8b67

 を見てください。書式は、
 =LAMBDA([parameter1, parameter2, …,] calculation)
 parameterは、calculationの中で対応する変数名であって、LAMDA関数の中でだけ意味を持ちます
(´・ω・`) 2025/09/04(木) 12:46:28

 エラーメッセージは以下。
 「関数を呼び出さずにセルに配置することはできません。
   かっこと引数を追加して関数を呼び出します(必要な場合)。
   または、関数を名前マネージャーに追加し、関数として名前を使用します。」
(xyz) 2025/09/04(木) 12:49:37

 記事を見てきました。

 >  =LAMBDA(x, y, x + y)
 >  この関数を使用するには、セルに直接入力するか、名前付き関数として定義します。
 これは間違いですね。
 既に指摘がありますように、
 =LAMBDA(x, y, x + y)(1,2)
 とかしないとダメです。
 誤解を招く記事です。

 ネットの記事は玉石混交ですから注意が必要です。
(xyz) 2025/09/04(木) 13:05:32

 リンク先のページはあくまでも
 「独自の関数を作成するための完全ガイド」
 で、LAMBDA関数で望みの関数を作ることに重点が置かれている。

 なのですでにLAMBDA関数に引数を渡すことを理解している人向けなのでは。
 と思った。
(ねむねむ) 2025/09/04(木) 15:14:38

 なるほどです。適切なコメントでは無かったかもしれません。

(xyz) 2025/09/04(木) 15:25:51


 質問者さんの理解のために、再度メモします。

 > しかし、「x」はA1セルの値、「y」はA2セルの値と
 > 定義しているのに、
 > 「=LAMBDA(x, y, x + y)」
 > が計算できない理由がわかりません。
 もう色々な方が指摘されていますが、
 それは関数を定義していて、関数だけをセルに配置することはできません。

 また、関数の定義に使った
 =LAMBDA(x, y, x + y)
 に登場するx,yは仮の変数(仮引数と呼びます)であって、既に名前定義したx,yとは無関係のものです。

 一方で、作成した関数を実際に使う場合に、
 =LAMBDA(x, y, x + y)(x,y)
 としたとすると、
 (x,y)と書いたところにあるx,yは実引数というもので、既に定義したものが使われます。

 ・関数の定義の部分と
 ・関数に実際の引数を指定して関数を実行する部分
 を分けて考える必要があるのです。

 このあたりは何かプログラミング言語を使った経験があれば理解しやすいと思いますが、
 最初に出会ったのであれば、少し腰を落ち着けて考えないといかないかもしれません。

(xyz) 2025/09/04(木) 15:39:52


 リンク先をちゃんと読んだら、私が12:46:28に書いたことは
 第2章で説明されていたのですね
 第2章が理解できているなら、余計なことでした

 すみません
(´・ω・`) 2025/09/04(木) 17:18:26


ご回答くださった皆様
詳細な説明を下さり、本当にありがとうございます。

おかげさまで、
「=LAMBDA(x, y, x + y)」
「=LAMBDA(x, y, x + y)(x, y)」
について、少し理解が進みました。

実務で少しずつ使う様にしてさらに理解を深めていこうと思います。

(訓練中) 2025/09/05(金) 09:24:05


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.