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

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

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のワークシート関数を使う。どちらを使うかの判断は、「どちらが読みやすいか」だが、練習の場合は単純でもユーザー定義関数を作ればいい。

(Visited 813 times, 1 visits today)
カテゴリー: 9 セルの中で使うユーザー定義関数の作成 <VBA> パーマリンク

ユーザー定義関数(自作の関数)のすすめ。利点と欠点 への2件のフィードバック

  1. kf のコメント:

    初めまして。1980年代から表計算(当時は、Lotus123)にかかわっています。
    ExcelにVBAが導入されたとき、「こんなに簡単に自作関数ができるとは・・・」と感激しました。久しぶりにVBAを復習しようと思ったところ、このサイトを見つけました。
    素晴らしい内容ですね。参考にさせていただきます。

    • ooooo のコメント:

      今頃ですが、7ヶ月も経ってます。すみません。
      ありがとうございます。
      自作がいいですよね。
      Excelの関数を使うより、大したことしてないので自作ということで。
      でも今はインテルがAIPCを出したりして、
      業務のシステムで使いにくい所をExcelでするという流れ。
      DX??とか飛ばして?ホントにAIが来ればと考えててほったらかしてにしていました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です