漁村ライフ

効率化に関するtips excelVBA編

こんにちは、竜太郎です。
赤坂水産に入社してはや7年。今年になって営業活動を始めるまでは、養殖業務の傍らで社内全体の業務改善に取り組んできました。
その取組の中で、幅広いジャンルの企業の方に役立ちそうなものが「VBAによる業務効率化」です。
特に比較的小規模な企業でexcelを使用されている方には有効です!

今回はその内容の一部について紹介します。ただし、私にはSEやプログラマーとしての経験があるわけではないので、紹介する内容には間違っている部分もあるかもしれません。
しかし!
裏を返せばSEやプログラマー経験のない方にも取り組んで頂きやすいプログラミング技術となっております。

 VBAって何?

 VBA(Visual Basic for Applications)とはmicrosoft office(主にexcel)での作業を自動化させることのできるプログラム言語のことです。
excelではなくgoogleスプレッドシート派という方はGAS(Google Apps Script)を使って同じようなことが出来ます。
どのようなことが出来るかというと、想像以上に色んなことが出来ます!
私が実際に作ったファイルの機能を見ながらVBAを用いて出来ることを説明します。

VBAを活用した具体例

自社で養殖した活魚の重量を計算し、取引先ごとに納品明細書と請求書をまとめて作成するためのファイルです。
※入力している数字はデタラメです。

1.セルでも使える関数を作成
生きた魚の価格は重量によって決まりますが、測定時にどのくらい魚体やケースに海水が付着しているのかの計算が結構面倒です。
また、この重量が取引金額に直結しているため、間違いが多いと取引先からの信用を失います。

そのため、VBAで魚を入れたケースの重さを入力することで、魚の重量を自動で計算する関数を作りました。
後述の納品明細書の正味総数量を算出するために利用しています。
自作した関数はセルでも利用できます。


2.情報を整理し、望んだフォーマットで自動印刷

インプット画面のボタンを押すと入力内容が自動で整理され、取引先ごとにまとめられた納品明細書が印刷されます。
その他、担当者や魚種毎に用紙を分けたりするなど、細かいルールも付加することができます。


インプット画面


各企業ごとにまとめられた納品明細書

3.データを別の場所や別のファイルへ保存し、遠方のPCと連携

そしてこの納品明細書と入力データはクラウド上のデータベースに保存され、入力データは事務所のパソコンで請求書を作る際に利用されます。
養殖場から送られたデータに単価を入れてボタンを押すだけで取引先ごとの請求書が発行されます。

4.データの整理、分析

データが1つのシート(データベース)に集約されているため、売上等の分析も容易に行なえます。
また、どの生簀から何尾どこに出荷されたかの確認もできるためトレーサビリティーの確保にも繋がります。


ある企業に対する真鯛の出荷尾数の推移

VBAのコードのイメージ

これらに関する操作が自動で行われるので、手作業に比べ圧倒的に正確で早いです。
また、特別な演算操作も必要ないため、データの入力も現場監督や新人にやってもらっています。
ただ、表計算ソフトゆえに苦手なこともございます。

苦手なこと(出来なくはない)

・膨大な量のデータの処理
・高度過ぎる計算
・PC以外のデバイスでの動作

100万を超えるデータの処理や、高度な計算、IOT機器やwebアプリの制御には、素直にpythonとかの他のプログラミング言語を使用した方が効率的です。
逆に他のプログラミング言語にはない魅力もございます。

他の言語と比較したときのVBAの魅力 

・開発環境を用意する必要がない
・みんなが大好きなexcelとの親和性
 →慣れ親しんだexcelでの入出力画面
 →面倒くさいとこだけVBA、簡単な計算はexcelシート上で実行

他のプログラミング言語で開発するには、色んな道具を取り揃えて、その設定をしなければなりません。さらに企業で作る場合は、必要なアプリのダウンロードやインストールに社内決裁が必要だったりするので、結構ハードルが高いです。
試しに他のプログラミング言語に対してプログラミング経験がない状態で開発環境を整えようとしてみて下さい。
私なら10分で嫌になると思います。

VBAですが、excelでファイルを開いてALTとF11キーを同時に押して下さい。
はい、開発できる環境が整いました。
また、excelのセルで計算できるものはVBAにこだわらずセルで計算してもいいですし、出力先に既に作成してあるexcelファイルの雛形を転用することもなども可能なため、とにかくexcelに慣れ親しんだ方にはお手軽に始めてもらえます!

まとめ 

以上の特徴から、VBAは、扱うデータ量が多くなく、扱う人間も少人数の社員だけという環境で、業務効率化のための比較的単純なツールを製作してもらうという用途に適していると思います。
そして、プログラミングの威力を認識してもらった後に、より高度な計算や膨大なデータを扱いやすい言語にチャレンジしてもらえればいいのかなと思います。
VBA以上に便利な方法もあると思いますが、私はVBAを使って毎日の事務作業にかかる時間も1/3以下にまで減らしたし、出力の正確性を向上させたことで、取引先からの信頼も高まりました。
肝心の始め方ですが、「VBA入門」等で検索すれば、私より説明が上手な方がまとめてくれているものがいくらでもございます。
少人数の身内で使うものであれば、あまり出来は気にせず、エラーが出たらその都度調べて直していけばいいや!ぐらいの感覚で使ってみて頂ければと思います。
いかがだったでしょうか?
今後機会があれば、中小企業でも意外と役に立つ回帰分析や深層学習などにも触れたい(触れたくない)と思います。

関連記事一覧