Mutable_Yunの業務改善ブログ

業務改善や生産性向上のブログです。自動化の手段として、VBAやRPAの勉強に役立つ解説をしています。

業務効率化ならExcel VBAから始めるのが最短

業種、規模を問わずエクセルが多くの会社で利用されています。実際、事務職で働く人でエクセルを使ったことが無い人はいないのではないでしょうか。今回は、そのエクセルの自動化から始めることが第一歩と言う事について解説します。

 

<2019/11/12 「RPAよりVBAが先」を追加しました。最も大きいメリットかと思います>

 

目次

 

業務の自動化はExcel VBAから始める


見積もり、得意先の管理、受注履歴、生産進捗の管理から飲み会の参加者一覧まで、幅広い用途で使われています。また、大企業で年間何千万円も保守費用を払うERP(基幹システム)を導入していても、大抵のユーザーは、結局エクセルにダウンロードして使っているのです。


実際に私自身の業務を棚卸ししてみたところ、出勤/退勤のタイムカードと旅費精算以外はほぼすべて何かしらの形でエクセルを使っていました。


幅広く使われていると言うことは、エクセルに触れている時間が多いと言うこと。それならば、エクセル操作の自動化から始めるのが良いでしょう。


このエクセル操作の自動化に使うプログラミング言語がExcel VBA(Visual Basic for Application、以下VBA)なのです。VBAを始めるメリットは効果が大きいだけではありません。

 

1.エクセルが身近なので学びやすい


エクセルは日常的に利用しているソフトなので、エクセルの機能をよく知っているという状態から勉強を始めることができます。「エクセルはよく使うけど、詳しくはない」と言う声が聞こえてきそうです。それでも四六時中触っているソフトならすでにかなりのことができるはずです。


たとえばエクセルのワークブックを立ち上げて、先月のシートの受注金額のところを貼り付ける、と言えば手に取るように操作が思い浮かびますよね。


プログラミングは、「何」を「どうやって」「どうする」のかをコンピュータに伝える作業です。「何」、「どうやって」、「どうする」をすでに思い浮かべられる状態で勉強を始めることができるというのがプログラミングを勉強する上で、とてつもなく大きなメリットなのです。


この例で言えば、

  1. エクセルのワークブック(何)を立ち上げる(どうする)
  2. 先月のシート(何)を開いて(どうする)
  3. コピーして貼り付ける(どうする)、式は消して値として(どうやって)

と言う具合です。

「どうやって」の部分が後ろに来ているのは、実際のプログラムの書き方に合わせています。とりあえず「何」を「どうする」かを書いて、「どうやって」は後から補足します。中学校1年生の英語みたいですね。

 

2.エクセルの機能に詳しくなる


始めは自分が知っている作業を一つずつそのままVBAに置き換えて記述していくだけだと思います。そして、その作業の中に学びがあります。エクセルのコピー/貼り付けは値として貼り付け(いわゆる値貼り)だけでなく、書式のみコピー、書式以外コピーなど様々な方法がありますよね。


普通のエクセル作業だとコピーして、貼り付けてから、貼り付けの種類として値貼りなど貼り付け方の種類を選びますが、値貼りをしたいのなら、「そもそも値をそのまま入れられないかな?」と思って調べる。調べると、知らないことが分かる。


この繰り返しでエクセルの機能に詳しくなりますし、あえてエクセルの便利な機能に頼らない、という発想が出てきます。

 

3.プログラミング的な考え方が身につく


突然ですが、インスタントコーヒーを作る方法を考えてみて下さい。

  1. お湯を沸かす。→5分くらいかかる
  2. 待っている間にコップにコーヒーの粉を入れる
  3. お湯が沸いたらコップにお湯を入れる

簡単ですね。

お客さんが来たので自分の分だけで無く、妻の分とお客さんの分と併せて3人分を入れる場合はどうでしょうか。

 

  1. お湯を沸かす。→5分くらいかかる
  2. 待っている間にコップにコーヒーの粉を入れる
  3. お湯が沸いたらコップにお湯を入れる
  4. お湯を沸かす。→5分くらいかかる
  5. 待っている間にコップにコーヒーの粉を入れる
  6. お湯が沸いたらコップにお湯を入れる
  7. お湯を沸かす。→5分くらいかかる
  8. 待っている間にコップにコーヒーの粉を入れる
  9. お湯が沸いたらコップにお湯を入れる

そんな馬鹿な。最初のが冷めてしまいます。普通はこうですね。

  1. 3人分のお湯を沸かす→5分+アルファ
  2. 待っている間に3つのコップにそれぞれコーヒーの粉を入れる
  3. お湯が沸いたら3つのコップにそれぞれお湯を入れる

同じ事を三回繰り返してもいいのですが、自然に3人分のお湯を入れる発想ができれば、これはプログラミング的な思考が身についてきたと言えるでしょう。


4.作業の品質が安定する


手作業だからミスをします。自動化する事により毎回確実に同じ事をして、毎回同じ結果が出ると言う事は、作業の品質が上がると言う事です。作業の質が安定することは、後工程に迷惑を掛けないことにつながり、単なる作業の効率化以上の生産性向上ができます。コーヒーも薄かったり濃かったりはしないほうがいいですね。


5.他のプログラミング言語を学ぶたたき台になる


このブログは非エンジニアを想定しています。よって、プログラミングを現時点でひとつも知らないとすると、確実に他の言語を学ぶためのたたき台になります。理由はプログラミング特有の単語が考え方が、チラホラ出てくるからです。この、チラホラというのがミソです。


VBA以外にもたくさんのプログラミング言語が存在しますが、大抵は知らない単語がたくさん出てきます。初心者がいきなりつまづかないためには、「できる、できる、できる」の中にたまに「調べないと分からない」ことが出てきて、調べる、という状態に自分を置くことです。


他のプログラミング言語を知っていたり、エンジニアとしての経験があったりすると、プログラミングの考え方が分かっているので、自分の得意な言語との差の部分だけ勉強すれば良い、と言う事になります。
その点、VBAは皆さんがよく知っているエクセルが土台となっているため、勉強の過程は自然と、「できる、できる、できる」の中に「調べないとわからない」がたまに出てくる状況になります。


Amazonや本屋さんで入門書や初心者向け、と書いてあるものは、「『この言語は』初めて」という意味の場合も多いので気をつけましょう。

 

6.業務の本質が分かる


3のプログラミング思考が身につくと関連します。お湯は3人分まとめてわかせば良い。となれば、一人分のお湯を沸かす作業を自動化するより3人分のお湯を沸かすプログラムを書いた方がいい。


お客さんが夫婦で来たり、子供を連れてきたときのために何人分のお湯を沸かすことができるか選べるようにしておいて方がいい。


このコーヒーを入れるという業務の本質(=成功の鍵)は何人分のコーヒーを作れば良いか、と言う点だったのです。本質が見極められるようになると、

「そもそもその作業いらくない?」

とか

「あの人も同じような事してるけど、資料を共有したら?」

など、プログラミング以外でも業務改善のアイデアが浮かぶようになります。


そのアイデアをもって、業務プロセス自体を変え、残った部分をプログラミングで自動化できれば、業務もすっきりし、自動化プログラムをする絶対量も減って一挙両得です。


非エンジニアはプログラミングのプロでは無く、業務のプロです。

 

なので、いままでの一人前の業務知識に少しのプログラミング的な視点を取り入れることで、このような改善提案がしやすくなります。


私たちは頼まれた動作をプログラミングする作業者では無く、一人前に業務をこなす作業者でも無く、プログラミングを通して業務を改善する一流のホワイトカラーになるのです。

 

7.周囲を幸せにし、自分も幸せになる


情報連携がうまくいかず、「あの時、データを納期通り渡したのに/いや、受け取っていない(メールに埋もれている)」と言う事はありがちです。自動化で業務が改善できれば、作業に没頭する時間が減り、タイムリーな受け答えが可能になります。


結果として、忘れてた、ミスした、と言う事が減ります。後工程やパートナーの信頼も上がります。そして一目置かれることでしょう。


これだけでも素晴らしい成果ですが、できれば勉強したVBAのプログラミングのノウハウは惜しげも無く教えて上げましょう。習得には少しの努力が必要ですが、知識、技術自体はインターネットでも無料でたくさん公開されていますし、本でも安く手に入ります。


安く手に入ると言っても、最初の一歩は踏み出せない、あるいは自動化にVBAプログラミングという選択肢があることすら知らない、という人にとってはそもそも、自動化を自分で行う知識と技術を安く手に入るという選択肢がありません。


少しの努力と少しの(あるいはゼロの)金銭で手に入った貴重な知識と技術を教えてありがたがってもらえる。そしてその人がさらに業務効率を改善していく。自分を中心に仲間がどんどん幸せになっていく気がしませんか。

 

 <2019/11/12 以下、追記>

8.RPAよりExcel VBAが先(圧倒的コストパフォーマンスと低学習コスト)

業務効率改善は本来、売上単価の向上と原材料費の低減を行う事で粗利益(生産性)を向上させるための施策を打つのが本質です。その時間を捻出するために自動化を考える、という事です。

 

自動化で話題になっているツールの一つとしてRPAが挙げられます。よくロボット導入で作業時間7割削減とか言っていますが、あれは営業トークで、実はプログラミング知識がなければても自分で実務に耐えうるRPAのシナリオを作ることはできません

 

事務職が作れるRPAの程度と言えば当日の何かのデータのダウンロードくらいのモノです。それですら結構難しいです。それならRPAから始めるより、手作業の大半を占めているエクセルの自動化の方が効率が良いです。しかもエクセルはパソコン代に含まれていて、買い切りです

 

毎年課金され、公式ドキュメントもおぼつかないRPAより、公式ドキュメントがしっかりしていて、タダで、解説記事も多いエクセルVBAがダントツで業務効率化に適しています。一番大きなメリットが追記という形になってしまい申し訳なく思います。私もRPAに触れて、改めてVBAを勉強する事のメリットが明確になったという状況です。

反面教師的ですが、RPAの使い方の記事も解説しています。この内容を読めば、RPAって前々簡単じゃない事が分かると思います。

 

非エンジニアの自動化プログラミングデビューの一言語目はVBAで決まりです!

  <2019/11/12 追記ここまで>

以上、業務の自動化ならVBAから始める理由7 8つでした。非エンジニアでもプログラミングを学ぶことは非常に有益です。業務改善のための一つの武器として、あなたもVBAの勉強を始めませんか?