[Office Master] | ||||||||||||
Excelのユーザー定義関数で複数の結果値を返す
|
||||||||||||
|
解説 |
Windows TIPS「Excelでユーザー定義のワークシート関数を追加する」「ユーザー定義関数で任意のセル範囲の値を取得する」では、標準モジュールを利用してユーザー定義関数を構築する代表的な方法について紹介した。
これらのTIPSでは、いずれも結果として1つの値を返すユーザー定義関数を紹介したが、Excelでは1つの関数で複数の値を返す「配列数式」という機能が用意されている。本稿では、この「配列数式」を利用して、指定されたセルの合計値と平均値とを同時に返すSumAvg関数を作成してみよう。
操作方法 |
手順1―新規に標準モジュールを生成する
ユーザー定義関数の実体は、標準モジュールで定義されたFunctionプロシージャだ。標準モジュールの追加は、Visual Basic Editorから行える。
メニュー・バーの[ツール]−[マクロ]−[Visual Basic Editor]から「Visual Basic Editor」を起動したら、[挿入]−[標準モジュール]で新しいモジュールを追加しよう。プロジェクト・ウィンドウに[標準モジュール]−[Module1]というモジュールが追加されるはずだ。モジュール名は任意に決めて構わないが、本稿では仮に「winTips」としておく。
手順2―ユーザー定義関数のプログラム・コードを記述する
それでは、具体的なユーザー定義関数を記述してみることにしよう。本稿で扱うSumAvg関数の仕様は以下のとおりである。
関数名 | 機能 |
SumAvg(セル範囲) | 指定されたセル範囲の合計値と平均値とを横方向(複数列)のセルに返す |
定義するSumAvg関数 |
コード・エディタ上に、以下のコードを入力してほしい。
Function SumAvg(範囲 As Range) |
配列数式とはいっても、Functionプロシージャでは単に戻り値として配列を返すだけなので(配列result(0)とresult(1)に結果をセットして返す)、コード上で特別に意識することは何もない。
手順3―ユーザー定義関数の挙動を確認する
それではさっそく、作成したSumAvg関数の挙動を確認してみよう。関数の実行に先立って、ワークシート上には以下のような簡単な表を作成しておくものとする。
あらかじめ用意しておくワークシート |
セルB6〜C6にフォーカスを合わせたうえで[Fx]ボタンをクリックすると、[関数の貼り付け]ウィンドウが表示される。手順2で作成したユーザー定義関数は、左のリストボックスから[ユーザー定義]を選択することで参照できる。
ユーザー定義関数の貼り付け | |||||||||
これはExcel 2000の例。[関数の貼り付け]ダイアログで、ユーザー定義関数のSumAvgを指定する。 | |||||||||
|
関数名として「SumAvg」を選択して[OK]をクリックすると、関数の引数(セルの範囲)入力用のダイアログが表示されるのも普通の関数とまったく同じだ。ここでは、試しに次のような値を入力してみよう。配列式を入力する場合には、式を確定する際に単なる[Enter](もしくは[OK])ではなく、[Ctrl]+[Shift]+[Enter](もしくは[Ctrl]と[Shift]を押しながら[OK]をクリック)で確定しなければならない点に注意すること。
引数 | 値 |
範囲 | B2:B5 |
SumAvg関数へ与える引数の例 |
セルB6にはB2〜B5の合計値、セルC6にはB2〜B5の平均値がそれぞれ表示されれば成功だ。もしもあらかじめ選択したセルが配列の要素数よりも少ない場合には、あふれた要素は無視されるし、多い場合には有効な戻り値が存在しないことを示すエラー値「#N/A」が表示される。
ちなみに、この例では配列値を横並びのセルに返している。もしも誤って縦並びのセルを選択してしまった場合には、配列の最初の要素だけが連続して縦に表示されるはずだ。配列の値を縦並びのセルに表示したいという場合には、ユーザー定義関数SumAvgを以下のように2×1の2次元配列を返すように書き換える必要がある。
Function SumAvg(範囲 As Range) |
関連記事 | ||
Windows TIPS:Excelでユーザー定義のワークシート関数を追加する(Windows Server Insider) | ||
Windows TIPS:ユーザー定義関数で任意のセル範囲の値を取得する(Windows Server Insider) | ||
この記事と関連性の高い別の記事
- ユーザー定義関数で任意のセル範囲の値を取得する(TIPS)
- Excelのユーザー定義関数で既存のワークシート関数を利用する(TIPS)
- Excelでユーザー定義のワークシート関数を追加する(TIPS)
- Excelでユーザー定義関数をエクスポート/インポートする(TIPS)
- VLOOKUP関数でExcel帳票への自動入力を可能にする(TIPS)
このリストは、デジタルアドバンテージが開発した自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
「Windows TIPS」 |
- Azure Web Appsの中を「コンソール」や「シェル」でのぞいてみる (2017/7/27)
AzureのWeb Appsはどのような仕組みで動いているのか、オンプレミスのWindows OSと何が違うのか、などをちょっと探訪してみよう - Azure Storage ExplorerでStorageを手軽に操作する (2017/7/24)
エクスプローラのような感覚でAzure Storageにアクセスできる無償ツール「Azure Storage Explorer」。いざというときに使えるよう、事前にセットアップしておこう - Win 10でキーボード配列が誤認識された場合の対処 (2017/7/21)
キーボード配列が異なる言語に誤認識された場合の対処方法を紹介。英語キーボードが日本語配列として認識された場合などは、正しいキー配列に設定し直そう - Azure Web AppsでWordPressをインストールしてみる (2017/7/20)
これまでのIaaSに続き、Azureの大きな特徴といえるPaaSサービス、Azure App Serviceを試してみた! まずはWordPressをインストールしてみる
|
|