[PR]当サイトはアフィリエイト広告を利用しています。
はじめに
エクセルVBAはエクセルのプログラミング言語です。
使えると様々なエクセル作業を自動化できます。
今回はその独学のノウハウをプログラマーの国家資格である基本情報技術者を所持する筆者が解説していきます。
独学できるよ
プログラミングは習得まで数百時間かかると言われています。毎日1時間費やして一年くらいかかる計算です。はじめはやれどもやれども理想の状態(日常の仕事の作業を自動化するなど)に近づけず、もどかしい状態が続きます。
それならスクールに通えば強制的に勉強出来ていいんじゃないか。わからなければ質問もできるし、お金を払っているんだからできるようになることが担保できるだろう。
そう考えて何も調べずに検索で出てきたスクールにいきなり数十万円払う。
ちょっともったいないなと思います。確かに最短でできるようになるのはスクールに通うことです。オンラインで完結するスクールはたくさんあります。しかし私はスクールに通わなくても独学で基本情報技術者という国家資格を取得できましたし、大学の研究でプログラミングする必要がありましたが、独学でそれ用のプログラムを作って卒業できました。
以下でなぜスクールに通わなくても独学でプログラミングができるようになるのか述べていきますが、まとめると次のようなことになります。
- プログラミングに必要な要素はそれほど多くない
- 大学の卒論レベルのプログラムなら独学で作れる
- 難しいと感じるのは何をすればできるようになるのか知らないだけ
- 本を買ってきて一冊仕上げるくらいでちょっとした業務自動化はできるようになる
- 文法ができるようになろう。このブログでは本一冊分で取り上げるくらいの内容を扱っています
実際のところ、ちょっとしたプログラミングができるようになるために必要な要素はそれほど多くありません。大学の半期の授業1コマ分程度で、大学の卒論レベルのプログラムが作れるようになる、くらいの話なのです。週一回90分の講義を4か月程度とすると、合計24時間程度の授業時間。授業の復習に毎週1時間プラスしたとしても合計40時間程度で卒論用プログラムが作れるくらいになります。
それくらいなら独学でもいいんじゃないでしょうか?
要するに難しいのは
何をやればできるようになるのかわからない
という情報の不足だと思います。
ところで、じゃあ何をすればできるようになるのか、という話ですが、基本的に
本を一冊買ってきて取り組めば十分
です。
大学の半期の講義一コマでやるプログラミング入門講座でもプログラミングの文法を一通り学習して終了です。そのくらいやれば卒論用のプログラムが作れるくらいになります。これってちまたにあふれているプログラミング入門書を買ってくればほとんど網羅されているんです。
このブログではプログラミングの文法を中心に初心者向けのVBA入門用練習問題を取り上げてきました。実はこれらの参考にしたのは、書籍と過去に私が受講したプログラミング入門講義です。
基本情報技術者試験だともう少し学ぶことがあるのですが、業務のちょっとした自動化ならこのブログのレベルで十分だと思います。
ちなみに何が基本情報技術者試験で不足するかというと「アルゴリズム」の習得です。上で「プログラミングの文法」と言いました。これはプログラミングの基本的なお作法のことで、実際はお作法を基本にそれを目的に合わせて組み合わせる必要があるんですね。
Scratchという小学生向けのプログラミング練習ソフトがありますよね。あれは文法をブロックとして扱って、それを組み合わせる作業でアルゴリズムを学ぶ「アルゴリズム」の鍛錬用のソフトです。
でも安心してください。文法を一通り学習すれば、ちょっとした自動化プログラムは書けるようになります。私はScratchに触ったことがありませんし、文法の学習だけで卒論用プログラムが書けました。
そこで今回は必要な文法は何なのか、これまでこのブログで取り上げてきたVBA練習用記事が文法のどこを対象にやっているのか、網羅的に解説することにします。
ただし、大学の研究内容によっては、文法の習得レベルでは太刀打ちできない可能性があります。色々な研究でより確実にきちんと担当教授の要求通りのプログラムが作れる、基本情報技術者レベルのプログラミングができるようになるには300時間くらいかかる可能性があります。
基本情報技術者試験の「アルゴリズム」のテキストなどでの訓練も行っていけば、より安心です。基本情報技術者試験の「アルゴリズムとプログラミング」の擬似言語での問題がすべて解けるくらいなら問題ないでしょう。
まず、プログラミングの基礎を習得するのに必要な勉強時間は、250~300時間がおおよその目安です。さらに、実務で必要なスキルを習得するには、1000時間ほどかかるという説があります。
レバテック, プログラミングの勉強にかかる時間はどのくらい?言語別の目安や学習方法
VBAはなぜ難しいのか【プログラミングとエクセル作業を混同している】
このブログの紹介に入る前に今回扱うVBAの学習が他のプログラミング言語(PythonとかCとかJavaとか)に比べてなぜ難しいのかという話をします。
プログラミングで必要な文法は主に次の3つです。
- 変数
- 条件分岐
- 繰り返し
これを学ぶにはちょっとした数値計算プログラムを作って学べばだいたい習得できます。
しかしVBAはマクロという作業を記録する仕組みがあるので、数値計算以外の様々なエクセルの動作をプログラムで制御できます。印刷とかグラフとか保存やセルの色塗りまで様々なエクセル作業を制御できるのです。
というよりできすぎてしまうのです。
数値計算のちょっとしたことだけ勉強すれば基本を習得できるのに、業務自動化VBAはマクロをいじるから、ほとんどのVBA入門書はマクロのいじり方を最初に解説してしまうんですよね。
するといきなり万能で多機能で複雑なマクロというものを理解しようとして、理解が追い付かなくて混乱する。やっぱりVBA無理だわとなるのです。
プログラミングとエクセル作業は別だと考えましょう。
まずは文法の習得を目指して、プログラミングができるようになりましょう。それを習得した次のステップがエクセル作業をいじることなのです。
VBAの文法を独学で習得するロードマップ
ではロードマップを示していきましょう。ちなみにこのシリーズはこのブログのタグ
「VBAゼロから」
で扱っています。記事本文開始時のアイキャッチ画像の上の方にタグが表示されていますので、それをクリックすればこのシリーズをまとめて閲覧できます。ご活用ください。
アルゴリズムと文法の区別【そしてちょっとした足し算をしてみる】
プログラミングに必要なのは文法とアルゴリズムであるという話をしていきます。
それを解説したうえで
5+2=7
をVBAで実行するためには何が必要かということを解説しています。エディタと言われるプログラムを記述する場所の開き方や使い方を解説します。
またVBAの保存方法などの基本的な使い方も解説しています。まずVBAを体験してみましょうという記事です。
変数
(1+3)×4=24
という計算をします。このときに(1+3)を変数という値を保存しておく入れ物に入れます。
Dim a As Integer
という英語が出てきます。変数aを定義する場面です。
変数はそもそもなぜ必要なのか。値を保存するため、繰り返し同じ値を使うため。そう言う解説をしています。
条件分岐
条件に合わせて処理を変える方法を学びます。
二つの数値を比較して、大きさに応じて処理を変えます。
If (a > b) Then
Range("E4").Value = a * c
Else
Range("E4").Value = c
End If
If文を覚えましょう。
繰り返し
決まった回数何らかの処理を繰り返すやり方を解説します。
上の条件分岐同様、プログラミングの要なのでよく学習しましょう。
5つの数値を合計する課題をやります。
CellsというVBA独特のセルへのアクセス文の使い方も解説します。
繰り返しと条件分岐を組み合わせる
条件分岐と繰り返しは組み合わせることができます。
5つの数値のうち、3より大きな値をピックアップしてその数値だけ合計するという課題を行います。
よく使う手法なのでしっかり学習しましょう。
繰り返しと条件分岐の練習2
エクセルのVLOOKUP関数を参考に、似たような作業をVBAで作ってみる記事です。
ホテルの料金表を元に、繰り返し処理で値を探って、条件分岐で特定の値だけピックアップする処理を作ります。
条件分岐と繰り返し3 値をカウントする練習
目的の条件に合致した回数をカウントするやり方を解説します。
条件分岐と繰り返しの練習です。
関数
文法の新しい項目「関数」を学びます。
関数とは決まった処理をパッケージにして簡単に呼び出せるようにしたものです。
塩ビ管の体積を求める課題をやります。
条件分岐の練習【解の公式をプログラミング】
二次方程式の解の公式をプログラミングしてみようという回。
条件分岐の練習です。
インデントを使いこなして見やすいプログラム
インデントとはタブやスペースでブロックを表すプログラムの書き方のことです。
インデントを使うと見やすく理解しやすいプログラムになります。インデントの使い方を学びましょう。
繰り返しの練習【複利の計算をしてみよう】
利回り2%で10年間1000万円を運用したときの資産を求めていきます。繰り返し処理の使い方を練習します。
まとめ
VBAを独学するためのロードマップを示しました。このくらいできればプログラムって何なのかわかってくると思います。
独学は自分で進めなければならず大変ですが、基本を覚えて自分の生活に生かすため、頑張りましょう。