-この物語は、入社して一年目の新人社員が上司の指南のもと、業務を自動化していく様を記したものです。物語はフィクションですが、自動化の手法は実際にパソコンやスマートフォンで実践できるものですので、物語と自動化作業の両方を楽しめます。(前回のストーリーはこちら)前回、緊急ミッションをこなした僕に、美人上司の太田先輩が、お昼ご飯を奢ってくれることになった。仕事をこなしたのは太田先輩なのだが、上司に奢ってもらえるのは部下の特権なのかも。それが牛丼屋だったとしても。太田先輩を待たせないよう、急いで机の上を片付けて、オフィスを出ると、そこには、太田先輩に加えて、同じ経理部の佐藤先輩も居た。二人きりではなかったか・・・」と、がっかりしつつも三人で歩き出した。ちなみに、佐藤先輩は、すらっと高身長の30才独身男だ。言えば、太田先輩と佐藤先輩が話しているのをよく見かけるなぁ。そんな複雑な思いで先頭を歩いていた僕は、牛丼屋に入るべく店の前で立ち止まった。その時、太田先輩が僕を呼び止めた。「田中君、お昼は牛丼ではなくてお寿司になったの。「なぜいきなり牛丼から寿司に?!」と驚いている僕に、太田先輩は笑顔のまま牛丼屋の数件隣にある寿司屋に入った。寿司屋のテーブル席にて、くつろいでいると、太田先輩が僕に質問してきた。太田先輩、先輩からプログラミングの素晴らしさを教わることができて光栄です。それでも、いつもプログラミングをするのが正しいというわけではないの。プログラムを作らない方が良い場合もあるの。「それは、プログラムを作らないで手作業でやった方が早い場合よ。プログラムを作らなくても良いなら、手作業でやるのが普通ですよね。」そのとき、佐藤先輩が口を挟んできた。「しかし!!人はプログラミングを覚えると、すべてをプログラミングで片付けたくなる生き物なのだよ。確かに、僕は華麗な太田先輩のプログラミングの腕に心酔し、世界のあらゆる出来事をプログラミングで解決できると思い込んでいた。「プログラミングは所詮は手段なのであって目的ではない。佐藤先輩は、太田先輩に笑顔を向ける。すると、太田先輩が続ける。プログラミングの実力アップのためと思っているなら、最初はプログラミングに時間を掛けることも悪いことではないけれど。その仕事をもっとも早く片付ける方法は何かを考えるべきよ。太田先輩はさらに続ける。「プログラムを作るよりも手作業が早ければ、そうするべきだし、紙に印刷して赤ペンで書き込んだりハサミで切ったりするのが早いのなら、そうするべきなの。作業に取りかかる前に、あらゆる可能性を考えてみて、どの方法で問題を解決するのが最も正確かつ早く仕事を終えることができるのか検討する必要があるということなの。僕はそれを聞いて「うーん、早く先輩たちのように、できる大人になりたいなぁ。」と答えるのが精一杯だった。太田先輩がお手洗いに場所を外した時のこと。佐藤先輩が僕に小声で話しかけてきた。太田先輩は、仕事もできるし、気も利くし、勉強熱心で、料理も上手。完璧すぎるわけじゃなくて、ちょっと抜けているところもあって、最高なんだ。「え?それって・・・」僕が驚いていると、太田先輩が帰ってきた。それで、その話は終わったのだが、どうやら佐藤先輩も太田先輩に惚れているということで間違いないようだ。そのとき、美味しそうなお寿司プレートが運ばれてきた。美しいお寿司が机の上に四人分並んだ。「あれ?四人分ですか?」僕が不思議そうな顔をしているところへ、寿司屋にもう一人入ってきた。前回緊急ミッションを持ってきた眼鏡美人の笹川さんだ。笹川さんがミッションクリアのお礼として奢ってくれることになり、牛丼から寿司にバージョンアップしたようだ。僕らは笹川さんから美味しいお寿司をご馳走になり大満足だった。僕に割り当てられた仕事は、営業部の成績グラフを作ることだった。営業部では月一回の会議のたびに、売上額の成績グラフを出して成果発表会をするのが通例となっている。契約の種類ごとに、誰がいくら契約を取ったのかというグラフだ。僕はプログラミング初心者であるものの、Excel自体の操作には習熟している。成績グラフの作成くらいあっという間に片付けることができる。これって、毎月一回やる仕事なんだよね。僕はしばし考えてから太田先輩に近づいて尋ねた。「太田先輩、先ほど頼まれた成績グラフの作成なんですけど、これってプログラムを作るべきですか?手作業でやった方が断然早く終わるんですけど。」すると、太田先輩は逆に質問してきた。僕は先ほど考えた結論を述べる。「えっと、今回はプログラムを作るべきと思います。件数が多いとはいえ成績グラフを作る作業自体は、それほど大変ではありません。この仕事は毎月、発生する仕事です。今回、多少時間がかかったとしてもプログラムを作っておけば、来月以降、楽ができると思うのですが、どう思いますか?」すると、太田先輩は笑顔で答えた。「田中君、よく見極めることができたわね。定期的に発生することが分かっている仕事であるなら、プログラムを作ることをオススメするわ。プログラムを作っておくことで、仕事をシステム化できるというメリットもあるしね。「システム化ですか?」僕が何のことだか分からないという声を上げると、太田先輩は優しく解説してくれた。「『システム化』とは、誰がやっても同じ成果を生み出せる体制のことよ。仕事の手順をプログラムにしておくなら、田中君の部署が変わってこの現場を離れたとしても、別の人が引き継いで同じ結果を出すことができるのよ。死んでもらっては困るわ。」と太田先輩は優しくフォローしてくれた。太田先輩が僕に気合いを入れてくれた。僕はできる気になって「はい!任せてください!」と言ったものの、プログラムの作り方はぜんぜん分からなかった。方がぜんぜん分からないんです。」と教えを請うと、「残念。」と断られてしまった。その代わり、VBA入門の本を貸してくれた。言え、本を読んでも難しかったので、恋敵である佐藤先輩の力を借りることになったのだが、なんとかプログラムを完成させることができた。!」とプログラムを見せると、太田先輩が満面の笑顔で「よく出来たね。」と褒めてくれたのが嬉しかった。佐藤先輩が「ほとんど俺が教えたんだけどな」と太田先輩に告げ口していたのが解せなかった。「早く一人で何でも作れるようになりたい!」と強く思ったのだった。実際のプログラムそれでは、今回、新人の田中君がライバル(?)の佐藤先輩と力を合わせて頑張って作ったプログラムを紹介しましょう。今回のサンプルデータおよびVBAマクロ入りのデータは、こちらからダウンロードすることができます。最初に、営業部の成績データですが、以下のような形式のExcelデータになっているとしましょう。営業成績を表すExcelデータそして、このデータを元に、各契約の種別ごとにグラフを作成します。その際、担当ごとの契約金額を集計してグラフを作成します。契約種別ごとに契約金額のグラフを作成する元データには、契約一件ごとの契約金額が記録されています。そのため、グラフを作る手順は以下のようになります。・(1)契約種類ごとにデータを分ける・(2)各営業担当ごとに契約金額を合計する・(3)上記データに対してグラフを作成するExcelに慣れている方であれば、上記の一つ一つの手順を処理するのは難しくありません。本文で田中君が気づいたように、グラフを出力するまでの手順をVBAのマクロにまとめておけば、Excelに慣れていない人でも手軽にグラフを作成することができますし、面倒な操作手順を経てグラフを作成する手間が省けます。実際にVBAマクロを実行してみましょう。契約一覧データを用意します。(このとき、データ形式は上記の書式にしておく必要があります。[F11]キーを押してVBAエディタを起動します。契約一覧のシートを選択して、以下のプログラムを貼り付けましょう。[Sub/ユーザーフォームの実行]をクリックします。MakeGraph」を選んで実行します。マクロを実行しましょうすると、契約種類ごとに新規シートが作成され、そこに営業ごとの合計契約金額の表とグラフが自動作成されます。プログラムの簡単な解説プログラムの(*1)では、営業後との契約金額を集計するために、Dictionary型のオブジェクトを作成します。これは、macOSのExcelでは使えないWindowsのVBAならではの技ですが、データの集計に上に便利な機能でよく使われています。このDictionaryとは、連想配列と呼ばれるもので、キーと値をセットにしてデータを操作できます。(*2)の部分では、契約一覧表の最終行を調べ、表の一行目からデータを確認していきます。セルの1列目(契約担当)、3列目(契約種類)、4列目(契約金額)を調べ、契約担当ごとに契約金額を合計していきます。(*3)の部分では新規シートを作成し、(*2)の部分で集計した契約金額の表をセルに書き込んでいます。最後に(*4)の部分で、(*3)で書き込んだ表を元にして、グラフを作成します。まとめ今回は、大量のデータを一気に片付けるのではなく、定期的に発生するタスクを間違いなく決められた手順で素早く処理する方法の大切さについて紹介しました。実際、プログラムを作っておくことで、複雑なExcel操作をすることなく、データ集計後のグラフが自動作成できるのは、とても便利ではないでしょうか。業務自動化の参考にしてみてください。くじらはんどにて、プログラミングの楽しさを伝える活動をしている。テキスト音楽「サクラ」など。※本記事は掲載時点の情報であり、最新のものとは異なる場合があります。Corporation。