関数は自分で作る

ユーザー定義関数(自作の関数)のすすめ。利点と欠点

「学問のすすめ」みないな。

Excelの標準モジュールに作った関数は、セルの中で使える。

ユーザー定義関数(自分で作る関数)を作るためには以下の知識が必要です。

  1. プロシージャが書ける
  2. 引数が使え、型を知っている
  3. セルの処理、Range,Cells、Offsetが使える
  4. WorksheetFunction関数、VBA関数がある程度使える
  5. 条件分岐、繰り返し処理ができる。
  6. 条件式が書ける

SUMIFやVLOOKUPなどのワークシート関数(Excel/エクセルに組み込まれている関数)は、何かやりたいことがあって使うのだが、自分が作ったわけではないので処理内容を確認しながら進める。以下の手順でワークシート関数を使う。

  1. 使えそうなワークシート関数を探す
  2. 使い方をチェック、期待する処理ができるか確認する。調査能力がアップするだけでプログラム力では無い。

一方、自分で関数を作ることができれば以下の手順で関数を作る。

  1. 入力と出力を決める。入力は引数でセルか値を渡す。出力はFunctionプロシージャの戻り値。
  2. 処理手順を標準モジュールに書いてFunctionプロシージャを作る

「???ができるワークシート関数はどれかな?」って探すのではなく、自分で作るので自作関数とかカスタム関数、ユーザー定義関数とか言う。

(プログラムする)利点

  1. セルの中に長い式を書かなくていい。最重要!
  2. 処理内容がコードにとして見える
  3. VBA学習のスタート課題として使える。これで力を付ける。
  4. VLOOKUP関数など複雑なワークシート関数の使い方を覚えなくていいし、ユーザー定義関数/自作関数の作成はスキルアップになる。作れば作るほど技能がアップする。

(プログラムする)欠点としては、プログラムやVBA関数を知らない人には読めない、修正、引き継ぎが出来ない点。「他の人が修正できないが!」というクレーム。

再計算の対象にするためユーザー定義関数内にApplication.Volatileを挿入する必要がある。一般的に動作が遅くなると言われるが更新されないクレーム回避策になる。

一般的なExcel使いの人の意見でスキルを止めてはいけない。使いやすい関数を提供してあげえればいい。

一般的に、INDEXやVLOOKUPなどを組み合わせるような式は読みにくい。メンテナンスする点からも、「引き継ぎ」に関して大抵は引き継げるほど簡素では無いはずだ。Excelのセルの中のコードを読むのって難しい。じゃない?

比較的簡単でセルの中を見れば処理内容が分かる程度ならExcelのワークシート関数を使う。どちらを使うかの判断は、「どちらが読みやすいか」だが、練習の場合は単純でもユーザー定義関数を作ればいい。

モバイルバージョンを終了