今日のおすすめ

PICK UP

2016.04.13

特集

面倒な「データ転記」が速くなる!  Excel中級者への神スキル

VBAを使えると、「私はExcelができます!」と堂々と言えるようになる

パソコンを使う作業の中で特に重要なのが、Excelのスキルです。求人情報などで「Excelを使える方」というのはよく見かけますし、面接などで「どのくらいExcelができますか?」とたずねられた経験をお持ちの方は多いかもしれません。職場によってExcelの用途はさまざまなので、「どのくらい使えるか」を明確に判断できる基準はわかりにくいのですが、「VBAを使えます」と言えれば確実に評価してもらえるでしょう。

VBAとは……?!

VBAは、マクロという仕組みを形成するプログラミング言語です。行いたい処理に必要な複数の操作をマクロにまとめておくと、1回のクリックで処理を実行できます。VBAを使えるということは、どの職場にもある面倒な作業を自動化し、速く正確に行えるノウハウを持っていることになるのです。 そこで今回はVBAの効果を紹介する目的で、実際によく行われるExcel作業の例をひとつ取り上げ、VBAを使わない場合と使う場合での差を比較します。日々Excelの面倒な作業で苦労されている方、部下がExcelに費やす作業時間の長さにお悩みの方は必見です。

誰もが自動化したいExcel作業の定番「データの転記」

実務レベルでよくあるExcel作業の代表格として、ここでは「データの転記」を取り上げます。「データの転記」とは、入力された毎日の売り上げ記録などのデータを、支店別などの基準で分けて転記する作業です。数十~数百件分のデータを、各都道府県にある支店別に転記するといったケースがあります。 今回の比較で使う例は、架空の製造業者の売り上げ記録で、以下のようになっています。

データ件数は24件なので、それほど大規模なデータではありません。しかし、手作業で1件ずつコピー&ペーストすると、かなり時間がかかります。また、6つある転記先(営業所)を判別する際に間違いやすいと想像できるでしょう。

[転記元]
データ件数は24件で、データの種類は7種(日付、エリア名、営業所名、顧客名、品目、単価、数量)。 このうち、エリア名と営業所名以外の5種(赤枠)を転記する。

[転記先]
営業所数は6つ(蒲田、品川、横浜、川崎、船橋、松戸)あり、6枚のワークシートに分けて転記する。ワークシートは、東京、神奈川、千葉の3つのブックに分かれている。

データ件数は24件なので、それほど大規模なデータではありません。しかし、手作業で1件ずつコピー&ペーストすると、かなり時間がかかります。また、6つある転記先(営業所)を判別する際に間違いやすいと想像できるでしょう。

VBAを使わずに作業する場合

まずは、VBAを使わない場合です。作業方法はいくつかあると思いますが、できるだけテキパキと行えるようにExcelの機能やショートカットキーを適切に使います。 転記作業は、蒲田→品川→横浜→川崎→船橋→松戸の順番でそれぞれ行っていくことにします。

1.転記元データを開く
売り上げ記録のデータをExcelで開きます。

24件あるデータの転記先は、エリア名と営業所名によって異なる。

2.[フィルター]機能でデータを抽出する
転記するデータを「エリア名」と「営業所名」で抽出します。

[並べ替えとフィルター]→[フィルター]をクリックする。

各見出しに[▼]が表示されるので、[エリア]と[営業所]の[▼]をクリックして、東京(エリア名)の蒲田(営業所名)のデータのみが表示されるように操作する。

東京の蒲田のデータが抽出される。

3.転記したいデータを選択し、コピーする
今回、各データの項目名である見出し部分は、転記先にすでに用意されているので、データ部分のみを選択します。コピー&ペーストの操作を営業所ごとに1回で済むように、離れたセル範囲を[Ctrl]キーを押しながらドラッグして一度に選択します。

離れたセル範囲を[Ctrl]キーを押しながらドラッグして選択する。

4.転記先のブックを開いて、データをペーストする
見出しの行の1つ下にある行の左上を基準に、ペーストします。

ワークシート名(赤枠)を確認したあと、見出しの行の1つ下にある行の左上を基準に、ペーストする。

蒲田のデータの転記が完了する。

5.手順「2.」に戻り、他の営業所のデータを抽出→コピー&ペーストを行う

このようにして、データを抽出→コピー→ペーストという操作を繰り返します。すでに開いているブックの表示切り替えは[Alt]+[Tab]キーで、ワークシートの表示切り替えは[Ctrl]+[PageUp]/[PageDown]キーを使って操作すると、いちいちマウスに持ち替えることなく作業できます。 しかし、実際にやってみると、似た操作を何度も繰り返すため、作業が完了するまでそれなりに時間がかかります。また、抽出したデータをコピーしたあと、間違ったワークシートにコピーしてしまう可能性があります。結局、作業終了後に、転記元データと見比べながら正しく転記できているか確認する作業が必要になってしまいます。

VBAを使って作業する場合

VBAを使って同じ作業をするとどうなるでしょうか。 この記事では、作業の差を比較するのが目的なので、あらかじめVBAでプログラミングされたマクロが用意されています。本来は、マクロを形成するプログラムを用意しておく必要があります。「それ自体が面倒だ。用意する間に作業してしまうほうが手っ取り早いのでは」と考えるかもしれません。しかし、一度きちんとしたマクロをプログラミングしておけば、何度も繰り返す処理を毎回たった1回のクリックで一気に、しかも誰がやっても確実に実行できます。「誰がやっても素早く確実に実行できる」というのは、実務において絶大なメリットです。 プログラムは何らかのブックに記述され、自動処理の実行はそのブックを開いて行います。今回の例では、データの転記に使われるブックとは別に、自動処理を実行するための司令塔的な存在となるブックにプログラムがすでに記述されています。

自動処理を実行するための司令塔的な存在となるブック(VBAのプログラムが記述されている)。

このブックに記述されているプログラムの処理内容のみ、以下に簡単に示しておきます。なお、実際のプログラムは下記と異なる処理方法で記述されていますが、今回紹介する記事の目的は、自動処理実行の様子を確認することにあるため、プログラムを書く方法やプログラミングが書いてある場所についてはあえて述べません。

■ 転記先ブック(3つのエリア分)を開く処理
■ 転記元ブックを開く処理
■ 開いた転記元ブックにあるデータの「エリア名」と「営業所名」ごとにコピーする処理
■ コピーした内容を、各転記先ブック(エリア名)の各ワークシート(営業所名)へペーストする処理

プログラムの実行は、[データ取込]というボタンのクリックで行えるようになっています。クリックすると、転記先となる3つのブックが開いたあと、[ファイルを開く]ダイアログボックスが表示されます。そこで開きたい転記元ブックを開くと、すべてのデータの転記が完了します。

[データ取込]ボタン(赤枠)をクリックする。

[ファイルを開く]ダイアログボックスが表示されるので、転記元ブック(赤枠)を開く。

ブック「東京」の転記結果

ブック「神奈川」の転記結果

ブック「千葉」の転記結果

「VBAを使わずに作業する場合」の手順と比較すると、あまりに呆気ないですね。しかも、VBAのプログラムでエリア名と営業所名を機械的に判別しているため、間違って転記されることはありません(もちろん、正しくプログラムされていることが条件になりますが)。

どうせVBAを学ぶなら、効率よく学ぼう

VBAを使う効果の大きさを実感していただけたでしょうか。もちろん、今回取り上げたデータの転記処理以外のマクロもVBAで作れるので、基本的にはあらゆるExcelの処理は自動化して、速く正確に行えます。 プログラミングの経験がない人は、「便利なのはわかったけど、プログラミングするのは大変そうなので、自分には無理じゃないか……」と思ってしまうかもしれません。そんな「Excel VBAに興味はあるけど、できるのだろうか……」と迷われている方にぜひお読みいただきたいのが、立山秀利さんによる『入門者のExcel VBA』という書籍です。 この本はブルーバックスという新書シリーズのものです。書店のパソコン書籍コーナーとは別の棚に置かれていることが多いので、これまで書店でVBAの入門書を探したことのある方でもご存知ないかもしれませんが、某大手ネット書店はじめとするウェブ媒体のレビュー(参考その1その2その3)で「とにかく解説が丁寧でわかりやすい!」と大好評のロングセラーです。新書サイズなので、かばんに入れても邪魔にならず、通勤中にさっと読めます。また、お値段もお手頃ですから、初めてVBAを学ぶ人でも気軽に手にとっていただきやすいのではないでしょうか。

2016年3月には、続編の『脱入門者のExcel VBA』も刊行されました。 今回紹介したデータの転記処理の例は、『脱入門者のExcel VBA』で使われているものです。「この記事で紹介された例のようなデータの転記の作業でしょっちゅう苦労している」という方は、あわせて『脱入門者のExcel VBA』もお読みいただければ、短期間で入門者から中級者へとステップアップすることも可能です。

日々、Excelの作業で苦労されている方ほど、VBAを使うメリットを心底から理解でき、たとえプログラミングの経験がなくても「自分がVBAを使えるようになって、作業効率の向上を実現させたい!」という明確なモチベーションを持てるはずです。そうしたモチベーションにしっかり応えられる『入門者のExcel VBA』と『脱入門者のExcel VBA』で、がっちりVBAを学んでいくのはいかがでしょうか。

おすすめの記事

2016.01.18

特集

顔認識もロボット制御も! 話題の「Raspberry Pi」で作ってみた

2016.01.07

特集

支持率断然! すごい家電トリビア【最新版】

2015.11.27

特集

この問題、解けるかな? 仕事力がアップする楽しい数学の世界

最新情報を受け取る