パソコンスキルの教科書

パソコンスキルの教科書

東京大学大学院卒。博士課程に進学を志すも、担当教授と折が合わず、無職になる。医者を目指すも結局断念。田舎で派遣社員として働く。「スキルがなければ、仕事ももらえない」と悟り、ビジネススキルを学ぶ。プログラミング、英語を学び、一部上場企業へ転職。年間100時間以上の業務効率化を行い、社内講師に抜擢。海外の案件を担当し、数億円のプロジェクトに携わる。個人の事業でも、月売上100万を達成。現在は、自分の価値を高めるためのスキル向上支援を行う

エクセルマクロVBAのプログラムやコードは全てを覚える必要はない

f:id:gene320:20180210142702j:plain

エクセルマクロVBAを勉強している人の中には、自分の知らないプログラムやコードを必死で理解しようとする人がいます。

しかし、仕事で使えるエクセルマクロを習得するためには、プログラムやコードをすべて覚える必要はありません。

実際、私はこれまでマクロを使って仕事を効率化してきましたが、すべてのプログラムを理解しているわけではありませんでした。

なぜプログラムやコードを全て覚えなくても、エクセルマクロVBAを使って仕事を効率化することができたのでしょうか。

実は、プログラムやコードの中には覚えたほうがいいものとそうでないものがあるのです。

このことを知らないでいると、マクロのプログラムやコードばかり覚えることに集中してしまい、いつまで経っても仕事を効率化できるマクロを書けるようになりません。

ここでは、マクロのプログラムを全て覚える必要はない理由とコードをマクロの正しい学び方についてお伝えします。

エクセルマクロVBAのプログラムやコードは全てを覚える必要はない

なぜすべてのプログラムやコードを覚えようとするのか?

マクロ初心者はウェブや本でマクロのプログラムやコードについて調べていると、ついついすべての情報を収集しようとしてしまいます。

なぜこのようなことをしてしまうかというと、知らない情報があると不安になってしまうからです。

たとえば、自分が知らない情報をみると、「この知識を知らないとマクロ作成に困るのではないか?」や「今は大丈夫だけれど、後で使うのではないか?」と気になってしまうのです。

では、なぜこのように不安に感じてしまうのでしょうか。その理由は以下の2つです。

理由1|覚えなくてもいいプログラムがあることを知らない
理由2|他のプログラムに置き換える知識がない

それぞれを詳しく説明していきます。

理由1|覚えなくてもいいプログラムがあることを知らない

マクロ初心者は不必要な情報までインプットしてしまいます。しかし、実際には、覚えなくてもいいプログラムはたくさんあります。

たとえば、以下のコードはどちらも「セルA1の値をabcにする」を示しています。

[1] range("A1").value="abc"
[2] cells(1,1).value="abc"

そして、マクロ初心者がこの2つのプログラムを見ると両方を覚えようとします。

その理由は、マクロ初心者は「同一の機能をもっていることを判断できないため、片方だけ覚えればいい」という選択ができないからです。

しかし、実際にはrangeとcellsはどちらか一方を覚えれば仕事で使う分には支障はありません。

ただ、マクロ初心者はrangeとcellsには何か違いがあるかもしれないと考えて、両方を覚えようとしてしまいます。その結果、ムダな情報を理解するのに時間を使ってしまうのです。

理由2|他のプログラムに置き換える知識がない

マクロ初心者の多くは、ウェブページのプログラムをそのまま利用しようとします。しかし、そのプログラムにエラーが出ると手も足も出なくなります。

その理由は、初心者が参考にしたウェブページの中には、難易度の高いコードが含まれている場合があるからです。

そして、難易度の高いプログラムを無理に編集するとエラーが出てしまい、解消できなくなってしまうのです。

実際、あるマクロ初心者の方は参考にしたウェブページのプログラムには配列が使われていたために、大変な思いをしました。

配列とは、複数要素を入れ込むコードのことです。配列を使うとプログラムの行数が減り、メンテナンスのしやすいマクロを書くことができます。そのため、上級者が好んで使います。

しかし、マクロ初心者は配列について覚える必要はありません。なぜなら、配列がなくてもfor nextで配列と同じようなことができるからです。それに加えて、配列を理解するのが難しいのも理由の一つです。

実際に私も初めて配列を学んだとき、理解できず一度挫折しました。そのため、ある程度知識がついてから習得するのが得策です。

しかし、ある初心者の方は調べたウェブページにたまたま配列が使われていたため、配列を利用せざるを得なかったのです。

もちろん、中級者・上級者であれば、配列をfor nextに置き換えればいいと理解できるので、必要な部分だけを取得して自分のプログラムに活かすことができます。

ただ初心者は、プログラムを他のものに置き換える知識をもっていません。そのため、そのウェブページで紹介されている方法に頼らざるを得なくなります。

最終的に、初心者には難しい配列を含めてすべてのプログラムを理解しないといけなくなってしまうのです。

このように、マクロ初心者は覚えなくてもいいプログラムやコードを覚えて時間を無駄にしています。

しかし、このような課題に直面するマクロ初心者は学習方法を根本的に間違えている可能性が高いです。

エクセルマクロVBAでは、プログラムよりも考え方を真似することが重要

マクロVBA初心者がプログラムの勉強を始めるときに、陥りやすい罠があります。それは、上述のとおり、「他人の使っているプログラムやコードを真似する」ことです。

実は、マクロVBAを習得する上で重要なことに、「プログラムではなく、考え方を真似する」ことがあります。

つまり、ウェブや本で紹介されている事例から学びを得ようとする場合には、そのサイトや書籍をそのまま使うことよりも、どういう考え方に基づいてプログラムが構成されているのかを理解することが大切です。

そこで、マクロ学習においてプログラムそのものではなく考え方を学ぶことの重要性について解説していきます。

プログラムだけを真似しても、仕事で使えるマクロを作れるようにならない

実際のところ、ウェブページで紹介されているプログラムをそのまま真似しても、仕事で使えるマクロを作れるようにはなりません。

それは、ウェブサイトのプログラムとあなたのやりたいことが完全に一致することはほとんどないからです。

調べたときにたまたま一致しても、「こんな機能も追加したい」や「この機能は要らない」となったときに、マクロ初心者の実力では対応できません。

逆に、仕事で使えるマクロを習得できる人は、マクロのプログラムそのものではなくマクロの全体構成や考え方を真似しようとします。

より具体的に言うと、「マクロを作成した人がどういう意図のもとで、そのプログラムを書いたのか」を考えた上で、自身のマクロに活かそうとします。

先ほどのウェブサイトで見つけたプログラムの例でいえば、ウェブサイトを確認したときに「なぜこのプログラムはこの位置でが使われているのか」、「このプログラムでは、なぜこのような流れになっているのか」などを考えます

そして、プログラムを作成している人の意図を理解した上で、自分に活かせる部分だけを抽出するようにします。このように考え方を真似することで、仕事で使えるマクロを書くことができるようになります。

マクロのプログラムは使用頻度の高いものから覚えるのが鉄則

しかし、マクロ初心者は「考え方を学ぶ」と聞いてもピンとこないはずです。そこで、マクロ初心者が、ウェブサイトのプログラムの考え方や意図を読み解けるようになるためのやるべきことを紹介します。

必ずやってほしいことは、使用頻度の高いプログラムから覚えることです。なぜなら、仕事で使うプログラムは基本プログラムの組み合わせで対応できるからです。

たとえば、英語初心者が英会話を習得するとき、英単語をすべて覚えるでしょうか。おそらくすべて覚えることはせずに、よく使う単語から学んでいくはずです。

それが、英単語の中には頻度高く使うものとそうではないものがあるからです。たとえば、英単語ではget, give, haveといった単語は頻出であり、ゼッタイに使えるようになる必要があります。

一方でreimburse(返金する), assure(保証する)といった単語は使用頻度が低いため、後から学べば問題ありません。実際のところ、使用頻度の低い単語は暗記しなくても、なんとなくの意味だけ理解しておけば十分な場合もあります。

これは、マクロでも同じです。プログラムの中にも使用頻度の違いがあります。実際、マクロが使えるようになる人ほど、重要なプログラムから学んでいきます。そして、重要なプログラムを組み合わせることで、レベルの高いプログラムも作れるようになるのです。

頻度高く使用する基本パターンから集中的に覚える

では、頻度高く使用する基本パターンとはどんなプログラムを意味しているのでしょうか。それは、以下のマトリックスを見てください。

・横軸|頻度(仕事でよく使うプログラムかどうか)
・縦軸|難易度(初心者にも理解しやすいプログラムかどうか)

f:id:gene320:20180210143856p:plain

特に、右下のマトリックスから集中的に覚えていくことのがコツです。

具体的に、各マトリックスに分類されるプログラムのパターンを見ていくと、以下のようになります。

f:id:gene320:20180210144019p:plain

マクロを作成するときは、これらのプログラムのパターンを組み合わせて作成します

マクロは基本パターンを組み合わせで作成できる

マクロは基本パターンを組み合わせで作成することができます。

たとえば、以下の動画はマクロを組んで、報告書が自動作成されるようにした事例です。


この事例では、以下のプログラムのパターンを組み合わせています。

・for nextプログラム
・比較プログラム
・転記プログラム

具体的には、以下のように組み合わせています。

[1] 元データと取引先が一致する行を見つける|比較プログラム
[2] 請求書の雛形へ書きだす|転記プログラム
[3] [1]と[2]を繰り返す|for nextプログラム

このように考えると、頻度高く使用するパターンを学んでしまえば、後は自分の仕事に合わせて、「組み合わせを変えればいいだけ」と分かります。

そして、使えるプログラムパターンのストックを一つずつ増やしていき、仕事に合わせて組み合わせることができるようになることが、正しいマクロの学習方法なのです。

ウェブサイトの情報をそのまま使うことのリスク

上述のとおり、マクロ初心者であれば、マトリックスの右下に含まれる基本プログラムから知識を増やしていくことが重要です。

そして、これはウェブサイトの情報が初心者用ではないことを意味する理由でもあります

なぜなら、ウェブサイトのプログラムは、レベルの高いプログラムパターンが混在しているからです。

たとえば、PDFの情報を取得してエクセルに一覧化するマクロを作成する場合を考えます。これは、初心者には非常に難易度が高いです。それは、以下のプログラムパターンの複合技だからです。

・比較プログラム
・配列プログラム
・for nextプログラム
・比較プログラム
・転記プログラム
・PDF操作プログラム

初心者がこれらのプログラムを同時に活用し、しかもPDFという外部アプリの中でも難易度が高いものを使うのは、簡単ではありません

多くの人は、自分が難しいことにチャレンジしていることを知りません。そのため、学習初期から難易度の高い基本パターンを利用しようとするのです。そして最終的に、自分にはマクロは向かないといって諦めてしまいます。

しかし、マクロは頻度の高い基本パターンから学ぶのが鉄則です。できることなら、比較プログラムや転記プログラムといった簡単な基本パターンだけで作成できるマクロから取り組むのがオススメです。

ただ、そういったことを考慮しているウェブページはほとんどありません。そのため、最初の内は、基本パターンだけを学ぶ教材を利用するほうが挫折しないで済むのです。

マクロVABのプログラムの考え方を習得することが重要

ここまで紹介したように、マクロVBAはプログラムではなく考え方を学ぶことが重要です。そして、マクロ初心者の内は、基本パターンを習得することで、少しずつ仕事で使えるマクロを書けるようになります

その積み重なると、自分が参考にしたウェブページのプログラムを作成した人と同じように、難しいマクロも作成できるようになります。

しかし、表面的なプログラムだけを真似し続けていると、いつまで経っても仕事で使えるマクロを書けるようにはなりません

まずは、プログラムを作成した人の考え方を理解し、基本パターンから学んでいくことです。

ただ注意したいのは、ウェブページのすべてが初心者が基本パターンを順序よく学べるようになっているわけではありません。むしろ、ほとんどのウェブページの情報が中級者や上級者のためであることは注意してください。