らふわく~Life&laugh work~受験算数・数学・趣味

残りの人生豊かにするためにLaugh work探しをしませんか!

エクセルVBAを2週間で習得できた方法

子供たちがこれからの時代を生き抜いていくのに必要とされるのは

英語とプログラミング

だと思っています。

子鉄がゲームでPythonというプログラム言語を使って路線図を書いているのを見て、Pythonという存在を知り、それが今流行っていて汎用性が高いと知り、勉強してみようといろんな本を買い込んだのがたしか今年の冬でした。

本やYouTubeの動画を参考にしながらやってみるもなかなか私にはハードルが高くて結局断念しました。

 

つい最近ですが、仕事でエクセルベースの台帳を改訂することになりました。

私はエクセル関数を駆使して改善を試みたのですが、

(本当はVBAを駆使してみたいけど自分にはそんな知恵がないので。。。)

 

まだまだデータの更新など手作業に負う部分が多くてそれでは漏れが発生する。エクセルなんだからマクロとかを駆使すればできるんじゃないの。

 

なんて、上司が簡単に言ってくれるもので、それはマクロを駆使してやれ!ということだなと受け止め一念発起してVBAを勉強することにしました。

 

実は10年前に仕事で必要に迫られてVBAを勉強したことがあり、当時はVBAがわかる人が近くにいたのもあって簡単なプログラムを組むことができました。でも以降自分でVBAを組むことがなかったのですっかり忘れてしまっていました。

当時買い込んだVBAの本は使われることなく残っていましたが、今回初心に戻ってこちらの本で勉強することにしました。

とてもわかりやすくていいです。

この本で約2週間ぐらいで基本を習得することができました。

 

そこでFor~nextによる繰り返し、If文による条件分岐、他のファイルのデータから値を持ってくるということをボタン1つで実装してみました。この繰り返しやほかのファイルからデータを持ってくるのはエクセル関数でも自動マクロでも実現できません。

 

いざプログラミングをしてみたものの、動きません。

特にFor~nextを入れ子構造にした部分が難しかったです。自分としては本に書いてあるようにしているのですが、動かないのは当然エラーがあるからです。

プログラミングはエラーをどうリカバリーできるかです。

ネットでエラーの意味を調べたり、試行錯誤の末、エラーの理由がわかりました。わかるまで相当時間がかかりましたが、産みの苦しみと思って。

おかげでいろいろと覚えることができました。

 

先日のブログで紹介した中学への数学の今月の表紙の問題です。

この問題、手計算だと場合分けで苦労して2時間ぐらいかかりましたが、VBAを使ってみるとものの数秒でした。

ランダム関数を利用して1でも7でもないという条件をどのようにプログラムに組み込むかがポイントでした。それはvlookup関数を使うことで解消することができました。

f:id:Happy-turn:20221025150034j:image

とりあえず、繰り返し作業や手作業の自動化のプログラムのしかたは覚えることができました。そうなると、フォームを使って入力や検索ができるようになりたい!って思うようになりました。

 

実はあるエクセルファイルを作ってみたくてフォームの入力や検索の方法を先週の日曜日に同じく本とYouTubeを使って勉強しました。

どんなエクセルファイルか?

 

算数の問題を考えるのが趣味でもう11月になろうとしているので、中学受験生向けにちょっとしたファイルを作ってみたくなったのでした。

 

ファイルが実現できたらそのうちまたブログで書きます。