- エクセルのマクロ(VBA)ができるとメリットって何?
- エクセルのマクロ(VBA)って何ができるの?
- マクロとVBAの違いって何?
エクセルで、色々な作業を効率化・自動化したいということで、マクロに興味がある方も多いと思います。
そんな興味のある方向けに、実際にプログラミングを始める前に、エクセルのマクロで、何ができて、どういうメリットがあるのか解説していきます。
私は個人事業主なので、お金の計算・管理やデータ分析、細々とした資料など色々なことをエクセルで管理しています。
その中の一部ではありますが、効率化できるところは、マクロで効率化したりしています。
プログラミングと言うと、何百行もコードを書いて大変そうと思われるかもしれません。
しかし、私の場合は、ほんの10~20行程度の小さめなプログラムで、10秒ぐらいの作業をボタン1つで処理できるようにしています。
結構小さく思えるかもしれませんが、回数の多い作業なので、何回もするとかなりの時短になっています。
エクセルの関数も便利ですが、関数レベルで実現できない処理がある場合は、マクロの導入を検討すると良いでしょう。
エクセルのマクロは、特に、エクセルを使う機会の多い事務職や個人事業主の方などが覚えておくと役立つ機会が多いと思います。
目次
エクセルのマクロ(VBA)とは?
エクセルのマクロ(VBA)とは、Microsoftが開発・販売している表計算ソフト『Excel』で使える効率化・自動化するための仕組みですね。
VBA(Visual Basic for Applications)がプログラミング言語で、主に、MicrosoftのOfficeシリーズで使われている言語です。
エディタなどの開発環境もエクセル内に組み込まれているので、エクセルがインストールされているのであれば、他に何も用意することなく、プログラミングをすることができます。
事務作業の効率化・自動化
エクセルのマクロを使えると何が良いのかと言うと、最大の利点は作業の『効率化・自動化』です。
何か仕事で、数値の計算・管理、資料やその他諸々の管理でエクセルを使う機会が多いと思います。
その中で、毎回同じような作業をしているのであれば、VBAを使うことで効率化・自動化することができます。
作業の一部分をプログラミングしておくことで作業の時間短縮を図れますし、全てをプログラミングで置き換えることができるのであれば、その作業はもう自分でしなくて済むわけです。
どちらにせよ、時間を短縮することができるので、その分他の作業をすることができるので、他の人より生産的に仕事をすることができます。
ケンさん
関数では無理なことをマクロで行う
エクセルは、ただ表やグラフを作れるだけでは無く『関数』を使うことで数値の計算や複雑な処理をすることができます。
例えば次のようなものがあります。
SUM(…) :指定した範囲を合計する。
COUNTIF(…):指定した範囲内の条件を満たすデータ件数を計算する。
エクセルには膨大な種類の関数が用意されているので、簡単な数値の計算であれば関数で事足りますし、複雑な難しい計算であっても結構実現することができます。
こんなことを言うと、
関数でも色々できるなら、マクロって使いどころあるの?
と思われるかもしれませんが、使いどころとしては、基本的に関数では処理しきれないことをしたくなった場合にマクロを使います。
マクロを使うかどうかを考えるためには、関数でできるかどうかを判断することになります。
そのため、まずは関数をある程度、熟知し、使うこなせるレベルになっておく必要があるという訳です。
マクロで何ができるのか、事例などについては後程解説します。
マクロ(VBA)を使えればエクセル上級者!
マクロを使いこなすことができれば、エクセル上級者と言えます。
エクセルは、目的の結果を得るために情報を整理し、計算をするためのソフトとして非常に優秀です。
ただ数値を入力してグラフを作るだけでなく、関数やマクロなど色々な機能が備わっています。
これらを使いこなせるかどうかは、その人の熟練度によって大きく異なってきます。
そのため、エクセルの機能をどこまで使うことができるかで、その人のエクセルの熟練度が大体見えてきます。
個人的にですが、エクセルの熟練度は次のようになるかなと思っています。
初心者:数値の入力・グラフの作成などの操作ができ、最低限1つの資料として完成させることができる。
中級者:関数を使って、数値の計算やデータの抽出などを効率的に行える。
上級者:マクロを使って、より複雑な計算やその他作業を効率化・自動化することができる。
ただ注意して欲しいのが、関数とマクロに関しては、ただ機能を使えるだけでは良くありません。
エクセルを使う時は、何かしらデータを整理したり、データの分析をしたりするはずです。
これらの結果を計算、表示するにあたり、関数やマクロを使って、どういう風に欲しいデータにするかプロセスを”考えること“が重要です。
ここを考えることができないと、関数やマクロだけ単に使えるようになったとしても、使いこなしているとは言えないと考えています。
データ整理・分析を求めて結果を出すという目標に対して、関数やマクロは、それを求めるための手段であることを忘れてはいけませんね。
マクロとVBAの違いについて
マクロとVBAって何が違うの?
と思われるかもしれません。
細かく言えば、次のようになります。
マクロ:複数の操作や手順、命令などを1つにまとめて、必要に応じて呼び出せるようにする機能
VBA :マクロを作るためのプログラミング言語
エクセルで色々な作業を自動化するためのマクロをVBAというプログラミング言語を使って作るイメージです。
また、マクロには、ユーザーのマウスやキーボードの操作を記録して、それを再現する機能という意味でも使われます。
エクセルにもそういう機能がありますし、フリーソフトなんかでもあります。
とは言え、書籍のタイトルやネットの検索では、”マクロ”でも”VBA”でもどちらでも内容に変わりないので『マクロ=VBA』と考えて問題ありません。
マクロの方も、記録・再現の方ではなく、VBAを使ったプログラミングと捉えていることがほとんどです。
エクセルのマクロ(VBA)でできること【事例】
エクセルのマクロを使ってできることをもう少し具体的に紹介します。
事例①:データ処理
セル情報の取得(読み込み)、設定(書き込み)ができるので、データの整理、計算などの処理をすることができます。
エクセルは表計算ソフトなので、何かしら数値や文字を入力して、表にしたり、データを分析したりするために使うと思います。
数字であれば何かしら計算することができますし、文字列であれば何かしら条件に従って置換、整形をすることができます。
例えば、別の資料に「山田 太郎(やまだ たろう) 25歳 男」のようなデータが1000件ほど並んでいて、苗字、名前、フリガナ、年齢、性別を分けてエクセルにまとめたい時にマクロを使えます。
このまま文字列をコピーしても1つのセルに全て書き込まれるだけですし、1箇所ずつエクセルにコピーしていくにしても、これを1000件もするとなると数時間ぐらいかかるので非効率です。
次の手順のマクロをプログラミングすれば、1件1件手作業で行わなくても一瞬で処理することができます。
- データを全てエクセルにコピーする。(1つのデータ1行分)
- セル情報を取得する。
- 「 (全角空白)」を区切りに配列で取得する。
- 横のセルに各項目を並べて書き込んでいく。
- 1000件分繰り返す。
少し大雑把に書きましたが、大体このような処理で文字列を簡単に使い勝手の良い形に整形することができます。
このように単純な数値、文字列を何かしら処理するのは、プログラミングの基本であり、得意とするところでもあります。
これを基本として、他の機能を実現することも多々ありますね。
事例②:レポートの自動生成(PDF, CSV保存, 印刷)
PDF、CSV、紙媒体(印刷)など様々な形で、レポートを出力することができます。
何かしら売上管理システムなどが導入されているのであれば、日別の売り上げなどグラフを使って分かりやすく表示されると思います。
しかし、そのようなものが無い場合は、POSデータなどから販売情報をエクセルに洗い出し、そこから日別、週別などの期間毎や調べたい情報に集計していくことになります。
日別、週別となれば、定期的にレポートを出すことになるので、自動的に出力できるようになれば、かなり作業効率がアップすると思います。
事例③:メール送信の自動化
VBAでは、同じMicrosoft社のメーラーソフト『Outlook』と連携してメールを送信することができます。
名前とメールアドレスの一覧、メールの定型文を作った上で、以下のような処理をします。
- 名前とメールアドレスのセルのデータを取得
- メールの定型文に名前などの情報を当てはめて、メール本文作成
- メールアドレスを元に、メールの送信
- 次の宛先のデータを取得(1に戻る)
このような感じで、自動でメールを送信するツールを作ることができます。
営業メールや社員宛てメール(全社員、チーム単位の社員)など、複数人にメールを送る方は覚えておいて損はないでしょう。
事例④:Web上のデータ収集の自動化
Web上から手動でデータを集めて、何かを分析したり、資料を作成したりすることができます。
その都度、色々なサイトを見てデータを集めるのであれば手動で良いのですが、定期的に同じサイトからデータを取得するような場合は、マクロで効率化・自動化する方が良いですね。
普通なら、サイトを開いて、データをコピーして、エクセルに貼り付ける。
さらに、複数のサイトを見るのであれば、サイト分この操作を繰り返す必要があります。
これを手動でするとなると結構大変ですし、嫌になります。
ケンさん
マクロを使えば、ボタンを1つ押すだけで、セルにズラッとデータを表示させることができるので、時間も大幅に短縮されますし、とても楽になるはずです。
マクロの実行タイミングについて
エクセルのマクロの事例をいくつか紹介しましたが、プログラムを実行できるタイミングについて紹介します。
- ボタンを押した時
- セルの値が変更された時
- ハイパーリンクをクリックした時
- ワークシートを再計算した時
- ワークシートを右クリックした時
- ワークシートをダブルクリックした時
- ワークシートがアクティブになった時
- ワークシートが非アクティブになった時
ボタンは、エクセルのシート上にボタンなどのUIを配置することができます。
自分で実行タイミングを決めたい時はボタンで良いですし、アクティブ時に計算することもできるので、ワークシートを開けた時に実行することもできます。
エクセルのマクロ(VBA)の勉強方法【初心者向け】
マクロ(VBA)の勉強方法としては、書籍やネットで調べるのがメインになってくるかなと思います。
ひとまず、書籍を使って一通りどういうことができそうなのか、軽く把握しておきましょう。
1ページ目から全部、実際にプログラミングを書いて、どういう動作をして…ということは時間がかかりすぎるので不要です。
最初は軽く見て「大体こういうことができるのか…」でOKです。
実際、プログラミングをするとどういう感じか経験してみたい方は、どこか1,2箇所ぐらいサンプルコードを見ながらプログラミングしていくと良いでしょう。
ケンさん
その後、実際にVBAを使って、実現したい機能、やってみたいことを考えましょう。
プログラミングを学ぶ上で大切なのは、自分で作ってみたいものを作ることです。
始めは、10~20行程度の規模感のプログラムで大丈夫です。
ボタンを設置して、そのボタンを押したら実行されて、ちょっと効率化できる感じのものから始めると良いと思います。
書籍に載っている例のようなシンプルなものでは無く、1つの機能を実現するために色々なことを複合的に考え、組み立てていく必要があるので、とても勉強になります。
また、その方が、楽しいですしモチベーションにも繋がります。
作りたいものが決まったら、VBAの書き方、セルからデータを取得したり、書き込んだりする方法、条件によって処理を分ける方法など必要な部分を書籍を確認しつつ、プログラミングをしていきます。
この時、書籍の内容だけでは知識的に足りない場合が結構あるので、そういう時は、1つ1つネットで検索して、試して、できることを増やしていきましょう。
先ほど、マクロの使いどころは、関数では処理しきれないことをしたくなった場合と説明しましたが、勉強する段階では特に気にすることはありません。
エクセルのマクロ(VBA)を学べるプログラミングスクールについて
数は少ないですが、一応プログラミングスクールで勉強する手もあります。
しかし、結論を先に言うと、事務職に就いていて作業効率のために使うのであれば、個人的にはおすすめできません。
プログラミングスクールは約10~50万と高額なので、プログラミングスキルを身に付けて転職や独立などの仕事として使う分には、時間の短縮や転職サポートが付いているのでおすすめしています。
ですが、事務職などで効率化・自動化するためのスキルアップとして、プログラミングスクールに入るのは費用対効果が合わない気がするので、あまりおすすめできません。
VBAを覚えて、そのスキルで仕事しているのであれば良いのですが、あくまで事務職という仕事の中で、スキルアップと言う形だと思います。
そのため、プログラミングスキル自体でお金を稼ぐわけでは無いので、そこに対して高額なスクール代を払うのはためらってしまいます。
VBAを使って効率化することで、数カ月、1,2年で見た時に、スクール代を回収できるぐらい昇給してくれそうであれば、払っても良いかな…という感じです。
ですが、なかなか難しい気もします…
私としては、VBAを覚えないと仕事が無くなる状況でもないはずなので、書籍などで、楽しみながらゆっくり勉強していけば良いと思っています。
まとめ:エクセルのマクロ(VBA)は事務作業の効率化に最適!
エクセルのマクロは、数値の計算やデータ分析、その他細々とした処理などを『効率化・自動化』することができます。
効率化・自動化することで、作業時間を大幅に削減することができますし、その時間を他の作業や休憩に使うことができます。
マクロの使いどころとしては、関数では処理しきれないことをやりたい時です。
データの抽出や分析をしようとすると、たまに関数では実現できない時がありますが、VBAでプログラミングすれば自由自在です。
エクセルをよく使っていて、毎回同じような作業をしているのであれば、大幅な効率化・自動化することができる可能性が高いので、一度作業を洗い出してみましょう。
コメントを残す