最初は、動けばいいから始まるVBAです。
そこからコードの効率化を求めます。
Functionや、クラスモジュール、ループ等です。
今回は、一番カンタンなFunctionの説明をします。
目次
なんだ、カンタン 1番カンタンなFunctionの説明
こんにちは。伊川(@naonaoke)です。
以前に、VLOOKUP関数を、Functionを利用して実行しました。
しかし、私は、VLOOKUP関数が、大嫌いです。
VLOOKUP関数が、大好きであれば、チャネル登録1万人は、あり得なかったと思っています。
Index関数とMatch関数が、私を、一躍、スターダムに引き上げてくれました。
しかし、そこから、HIT動画もないので、まさに、一発屋です。
ねずみ先輩や、堀江淳さんと、同じ部類です。
なので、Index関数とMatch関数をFunctionで紹介しないと、伊川ではないと思いました。
今回は、Index関数とMatch関数をFunctionで実行します。
この動画で、Functionの疑問も解決できると思います。
何度も言いますが、合否判定や、消費税の計算だけが、Functionではありません。
このブログはこんな人にお勧め
- Excelで、VBAを勉強している人
- VLOOKUP関数が、大嫌いな人
- VLOOKUP関数とIF関数の組合せた、Excelを利用している人
このブログを、読み終わるころには・・・・
確かに、Function内で、配列等を利用すると難しいのですが、
今回は、Excelに許されたWorksheetFunctionを利用します。
それほど難しくはありません。
Functionを利用する面白さ
私が初心者のころ、複雑なFunctionプロシージャのコードを見て、書いている人は天才と思っていました。
多分、私は、その領域に絶対に到達できないと思っていました。
勉強しようと思っても、合否判定と、消費税の計算ばかり。
他の言葉で検索すると、異常に難しいFunctionの記載が・・・・・・・
えーい、面倒くせー、Functionなんて知らなくても、動けばいいと思ってはいけません。
これから、順に説明します。
きっと、なんだ、そんなことかと思うはずです。
Functionを利用する面白さ 作業手順 その1 データベース確認
もちろん、VLOOKUPでもできます。
しかし、私は、Index関数とMatch関数の大ファンなので、VLOOKUPを利用しないで、Functionで表現します。
Functionを利用する面白さ 作業手順 その2 Functionで関数を記載できない
その気持ちわかります★
そうなんですよね。ここで、まず、躓きます。嫌になります。Functionなんでカンけーねぇと思います。
でもね。
WorksheetFunctionを利用すると、少しだけ理解できるようになります。
これが、本来、ワークシート関数で表現する、Index関数とMatch関数です。
では、この中に、引数は、何個あるでしょうか?
全部で4つあります。
この4つが、Functionの中に格納されます。
Function(1個目の引数 as 型,2個目の引数 as 型 , 3個目の引数 as 型, 4個目の引数 as 型)as Variant
このようになります。
ATAI⇒B:B⇒Variant型
str⇒A:A⇒Variant型
rng⇒F:F⇒Range型
このように設定します。
ワークシート関数で表現する、Index関数とMatch関数を利用するとき、私は、すべて列で指定しています。
しかし、VBAで表現するときは、間違いです。
ATAIと、strは、結果的に列を指定しています。
Variant型にしたのは、検索するものが、数値が、文字型がわからないので、汎用性を持たせるために、Variant型にしています。
Functionを利用する面白さ 作業手順 その3 Index関数とMatch関数を記載する
赤枠と青枠は、ほぼ、同じ意味です。
赤枠のほうは、汎用性を持たせるために、ボヤーと記載しています。
範囲等は、Subプロシージャで設定します。
Functionを利用する面白さ 作業手順 その4 親プロシージャに記載
ここのSubプロシージャで、範囲等をしていします。
えっ、コードに無駄が多いって?
スルドイです。
その通りです。ここは、ループで回しましょう。
Functionを利用する面白さ 作業手順 その5 ループを設定
これで完成です。
本日、派遣の人に、
私の必殺技である、Index関数とMatch関数の組合せを伝授しました。理解した時の、ドヤ顔が素晴らしい。
俺が教えたいのは、Excelじゃない。
学ぶことの楽しさなんだよ。君も将来、部下となる人に、学ぶ楽しさを、教えてほしい。
— ITコンサルタント直助@実務で利用できる技をYouTubeで公開中 (@naonaoke) November 10, 2021
ここがポイント
今回のコードや、ロジックは自慢できるものではないと思います。
でも、思い通りに動いてくれたので、これで良しとします。
大切なのは、ここで賢いと思ったつもりにならないことです。
ここが限界ではありません。
もっと、綺麗にコードが書けるまで、勉強は続くのです。
まとめ
今回は、Index関数とMatch関数をFunctionで表現しました。
こんなコードは、まだまだです。
もっと勉強して、みなさんに有益な情報を提供したいと思います。
今回も最後まで読んでいただきありがとうございました。
今回のサンプルファイルは、No269です。
わからない事を延々と考えるのは、無駄です。
- なんで作動かないの?
- もうやだ!VBAなんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。