それ、セル関数で普通にできるよね?通常機能だとできないか確認しよう!

妹「で、できた!VBAマクロの完成だ!」

兄「何を作ったの?」

妹「ふふふ、いい?第一引数に範囲を指定して、第二引数に列番号を入れる」

兄「うん」

妹「そして第三引数に探したい文字を入れると。ほら、第一引数の範囲で第三引数を探して、一致してたら第二引数の列の値を返す!すごくない?」

兄「それvlookupだよ」

通常機能にある機能を作ることは否定しません。ただ、その機能を知っていて作ったのか、知らずに作ったのか。

どっちにしろ動くんだからいいよね、となる事が多い行動ですが、バカにできない重要な事です。

兄「このソフトをどう思う?俺が昔作ったファイルコピーなんだが、12MBだ。入れてみるか?」

妹「うん、実行したらエラーが出たよお兄ちゃん……」

兄「はい、VB6のDLLだ。これもインストールしてね」

妹「ふむ、起動したよ」

兄「ここのボタンを押してパスを入れる。次にここのボタンを押してパスを入れる。実行ボタンを押せばそこにコピーする。すごいだろ?」

妹「パスを選ぶのがめんどい……そんなことしなくてもctrlc,ctrlvでコピーできるし、エクスプローラでもコピーあるし、使わないよね?あっ、コピー速度が速いとか?」

兄「いや、このソフトはバックグラウンドでコマンドプロンプトのコピーを呼んでるだけだからむしろ遅くなるよ」

妹「だめじゃん!?なんでそんなソフトを作ったの!?」

兄「そうなるよね。じゃあ妹の作ったvlookupもどきのマクロは組み込みvlookupと比べて何がすごい?」

妹「……昇順じゃなくても全件検索してくれる」

兄「じゃあ、2つ見つかったらどうなるの?セルは一つしかないでしょ?試しにやってみるか。あ、マクロ止まった」

妹「配列を返そうとして失敗してるね……ユニークにしないとだめだよお兄ちゃん。はい、重複削除!」

兄「それボタン一つで昇順になるのに、ユニークにするほうが面倒だし危なくないか?もし必要なデータが消された側にあったらどうするの?一件ずつ見るの?」

妹「兄ウザイ!じゃあ最初に見つかった方を返すよ!」

兄「このマクロを渡して、関数imoimoが呼ばれててさ。何をしてるのか、とマクロは読めないけどセル関数をだいぶ覚えてる人……そういう人は多いからね?そういう人が受け取って、必死にVBAリファレンスめくりながら劣化vlookupだと解ったらどうなると思う?」

妹「どうなるの?」

兄「クッソ怒られる。マクロを書ける、と言う評価から一転、エクセルもまともに使えないやつだとレッテルをはられる。そして精神を病んで業界を辞めたりする」

妹「パワハラだよお兄ちゃん!」

兄「組み込み関数は組み込み関数として完成されてるものなんだよ。それに手を入れる、似たものを作るというのは余程の理由が無いと難しいんだ。それかcustomVlookupとか元関数から名前をつけて何をしてるのか解るようにコメントを書いておく」

妹「ふむふむ」

兄「マクロでなんでもできるようになっても、セル関数の名前と動きはきちんと確認しようね」