エクセル実践塾 > エクセル実践塾2013

セル範囲を対象とするユーザー定義関数を作りたい

 

For Each...Next ステートメントを使って、選択範囲に含まれるセルを順番に処理します

セル範囲を処理対象とする場合には、For Each...Next ステートメントを使います。

For Each 変数 In セル範囲

   ・

   ・

   ・

Next 変数

ユーザー定義関数は、Functionステートメントで、任意の名称の関数を宣言し、自動的に追加される「End Function」行の間にその処理を記述します。

処理の対象となるセル範囲は、引数で指定します。

Excel 2013/2010

 

@「function」+関数名+引数を入力します

作例では、「範囲」と「条件色セル」の二つを引数とするユーザー定義関数の作成を行います。

「範囲」にはセル範囲を、「条件色セル」ではそれと比較するセルを指定します。

※ユーザー定義関数は、同じモジュールに複数作成することができます。関連するユーザー定義関数は、一つのモジュールでまとめて管理できます。

A自動再計算のための「Application.Volatile」メソッドのあとに、For Each...Next ステートメントを入力します

引数として指定された「範囲」内の各セルを、順に変数「cc」へ代入しながら、範囲内すべてのセルに対しての処理を行っていきます。

B「For Each」行と「Next」行の間に、各セルに対する処理を記述します

作例では、前に作成したCellColor関数を使って、範囲内の各セルと、指定セルの塗りつぶし色を比較しています。そして、一致するセルが見つかるたびに、変数「kosu」でカウントしています。

C処理の結果を、関数に戻します

処理の結果を、関数名で表される変数に代入すれば、関数としてその値を得られるようになります。

作例では、変数「kosu」でカウントした一致個数を、関数に戻しています。

Dユーザー定義関数の引数は、通常の関数と同じように指定します

作例のユーザー定義関数を使うと、指定セルと塗りつぶし色の一致するものを、指定範囲から探してその個数を表示できます。

 

関連する他のページ

郵便番号や会員番号、日付の表示形式を整えたい
ユーザー定義すれば、ハイフン付きの表示や、表示桁位置の固定などを、データの修正なしに行えます

「1/1」をそのまま入力したい
あらかじめ表示形式を「文字列」にしておくと、「1/1」が日付にならずそのまま入力されるようになります

金額を千円単位で表示したい
表示形式で設定できます

「0」を付加しないで、小数点の位置を揃えたい
ユーザー定義の表示形式で、桁プレースホルダの「?」を使えば、「0」が付加されないで、小数点の位置がそろうようになります

翌日の時刻を「28:02」などと表記したい
表示形式を「[h]:mm」とユーザー定義します

日付を和暦で表示したい
「カレンダーの種類」を「和暦」にします

10桁の商品番号をハイフン付きで表示したい
「セルの書式設定」→「表示形式」タブで、「000-000-0000」のようなユーザー定義を設定すれば、10桁の数値をハイフン付きで表示させることができます

月ごとにシートを用意してるから、日にちと曜日だけをセルに表示したい
セルの表示形式をユーザー定義すれば、日にちと曜日だけの表示にできます

日付を曜日付きで表示したい
表示形式を変えれば、その日付の曜日も表示できます

セル値に文字列を追加したい
表示形式を使えば、複数のセル値にまとめて文字列を追加できます

特集「条件付き書式」

指定色で塗りつぶされているセルの個数を求めたい
塗りつぶし色を数値で表すユーザー定義関数を作れば、数式で求めることができます

指定色で塗りつぶされているセルの個数を求められる、ユーザー定義関数を作りたい
ユーザー定義関数は、その処理を拡張できます