1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Excel LAMBDA関数をExcel Labsアドインで快適に開発する

Posted at

Excel LAMBDA関数の作成ですが、デバッグしにくいですし、IDEの支援がないので、まぁまぁメンドクサイです。
で、便利なツールをExcelアドインの形式でマイクロソフトが提供してくれているので、ご紹介。

まずはExcelアドインのインストール

次のURLから入手。
https://appsource.microsoft.com/ja-jp/product/Office365/WA200003696
image.png

インストールが完了すると、「ホーム」リボンに「Excel Labs」が登録されていると思います。
image.png

セル内のLAMBDA関数の編集とデバッグ

編集

「Excel Labs」ボタンをクリックすると、下図のように画面右側に編集画面が表示されます。
「Grid」タブをクリックし、A1セルにフォーカスを当て、編集画面でLAMBDA関数を作っていきます。
Ctrl+Sで上書き保存するか、フロッピーディスクアイコン(今時この記号でよいのだろうか?)をクリックすればセルにLAMBDA関数が反映されます。

image.png

デバッグ

右上の虫アイコンをクリックすると下段にデバッグ画面が開きます。

image.png

緑三角アイコンをクリックすると折りたたまれた関数をドリルダウンします。
image.png

名前定義したLAMBDA関数の編集とデバッグ

Excel Labs画面で「Modules」タブをクリックすると、編集画面が開きます。
ここでLAMBDA関数を作ります。ここでうれしいのは、

  • コメントが書ける事。
  • モジュールという概念があること。この図では、デフォルトの「Workbook」モジュールですが、モジュールの中に複数のLAMBDA関数が書けるので、ある程度のまとまりで関数を管理したいときに便利。

image.png

モジュールを作って関数を編集

「+New」ボタンをクリックすると、モジュール名を指定するダイアログが表示されるので、名付けたいモジュール名、例えば「MY_LIB」と入力して「Add」ボタンをクリックすると、
image.png
次のように「MY_LIB」の編集画面になります。
image.png
ここに、次のような書式で関数を作っていきます。

関数名=LAMBDA( .... );

例えばこんな感じに入力して、保存します。

fncMY_ADD=LAMBDA(a, b, a+b);

image.png

すると、名前の管理で定義を見ると次のようになっています。
image.png

「Excel Labs」で名前定義を見ることができて、「Names」タブの「Modules」タブをクリックすると、モジュールで定義した関数を一覧で見ることができます。鉛筆ボタンをクリックすると編集画面に遷移します。

image.png

「Names」タブには、他にも「Functions」や「Ranges」、「Formulas」のタブがありますが、これらは他に名前定義しているものが見られます。

名前定義した関数のデバッグ

どこか適当なセル、例えばF2セルに先ほどの「fncMY_ADD」関数を入力して実行してみます。
モジュール化しているので、接頭辞に「MY_LIB」をつける必要があります。入力予測してくれます。
image.png

例えばこんな感じで入力すると、結果は期待値通り「3」が返ってきます。
image.png

デバッグは、F2セルが当たっている状態で、「Grid」タブをクリックしてデバッグ画面を表示すれば内容を確認できます。
image.png

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?