Mutable_Yunの業務改善ブログ

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

VBA 自動化ツールの目的を深掘りして、完成度を高める①(出力データ編)

VBAで業務の自動化を進める際、これから着手するツールの役割を考えていますか。

今回はより使い勝手のよいツールを開発するために、目的の深掘りをしてみましょう。


この記事はVBAレベル初級者~二段です。
レベルについてはExcel VBAの実力(レベル)を定義してみる 初心者~三段をご参照ください。


目次

開発案件の目的を深掘りする

確かにVBAは入力と求める出力結果が明らかになれば、早速開発に着手できるメリットがあります。

実際に早速着手すべきです。

しかし、より良いツールを開発するためには、そのツールが使われる場面を考えてみる、使う人がどのような状況で使うのかを想定してみる、といった事が必要です。

VBAを使った業務自動化、効率化には、エンジニアのような要件定義は不要ですが、負担にならない程度にこれらを考えてみる、可能であれば紙に書き出してみる、と言うことが大きな意味を持ちます。

まずは期待されている出力データについて見ていきましょう。

出力データを得ることが目的のプログラムの場合

出力データが目的の場合、次工程が存在しない完成品なのか、次工程の作業が手作業なのか、次工程が何か別のシステムなのかによって求められる出力結果が異なります。順に見ていきましょう。

出力データそのものが完成品の場合

出力データそのものが完成品とは、それ自体が会議資料の一部となる、発表資料の添付書類になる、実績進捗として張り出される、など、その後に加工することを前提としていないデータが出力物と言う事です。

この手のデータはグラフや表など見栄えを気にします。エクセルデータとして出力することになります。
背景の色や罫線、文字の折り返し、文字の大きさやフォントを整えることを重要視しましょう。

忘れがちなのが、セルの書式設定です。後工程を想定しないため、データは基本的に式などを残さず値で保存します。

その際、セルの書式は文字列であるべき所は文字列に、数値であるべき所は数値に、日付、通貨もあるべき姿にしておくべきです。

売上高の列の単位が米国ドルで12.34などの表記がある中で、10ドルぴったりの時だけ10と表示されているのは望ましくありません。小数点以下2桁で揃えるべきなら、10.00と表示しましょう。

文字列と数字が混在する列(例えば仕入れ先コードが数字のみからなるものと、文字列がある)と言うような場合、セルの書式が標準のままだと、文字列は左揃え、数値は右揃えになってしまいます。

このようなことにこだわって作れば、そのツールを使う人は安心して、そのままパワーポイントに貼り付けるなどできるようになります。

グラフを作成するときは、パワーポイントに貼り付けてプロジェクタで投影されることまで気をつければバッチリです。薄い緑や黄色など、PC上は見やすくてもプロジェクタで投影すると薄くなる色は要注意です。

人の手作業による次工程が存在する場合

人の手作業による次工程が存在する場合は、その手作業がどのようなものなのかを具体的に確認しましょう。その時、単に確認するだけで無く、その後工程がそもそも必要なのか、削れないとしても自動化できないか、と言った視点を持つことで、自動化に対する感性を磨くことができます。

私は基本的には出力物は数値であるべき所は数値、文字列であるべき所は文字列として保存します。これは基本として心得ておきましょう。なぜならば、その後の手作業にVLOOKUPがあると、検索値が数値の場合、検索範囲の中に存在する値も#N.A.が返る事があるためです。

以前、一度、敢えて計算式として残して欲しいと言った要望がありました。どうしてもPCの画面を見ながら人の目で判断して埋めないと行けないセルが在り、その埋めた結果を使って計算させるために、ワークシートの中に計算式を残して欲しいという依頼でした。

内容を確認し、計算式を残すようにマクロを組みましたが、これは例外です。その人しか使わず、計算式をあえて残している事を忘れない、と言う合意の元、リリースしました。

エクセルの計算式は、実は一つの値が変わると、そのセルに関係ある式以外も、全ての式が再計算されます。
なので、もし大量にVLOOKUPの式が残ったまま、などという状況だと、一つセルをいじっただけで、毎回再計算を待つことになります。

エクセルに詳しい方だと、自動計算をOFFにして、全ての手作業を終えてから、手動で一回再計算する場合もあります。エクセルの中に計算式を埋め込んだままにしておく、というのはこれほど気をつけなければいけないことなのです。避けられるなら、割けるのがおすすめです。

その他のツールやシステムによる次工程が存在する場合

次工程のデータの取り込み方がどうなっているのかをよく確認しましょう。列の順番が合っていればヘッダの文言は問わない場合、ヘッダの値が合っていれば列の順番は問わない場合があります。

出力形式もcsv、タブ区切り、スペース区切りがあります。気をつけましょう。エクセルとして加工してからテキストで出力する場合、0から始まる数値の取り扱いに気をつけましょう。先頭の0を残してテキストに保存するためには、セルの書式設定を文字列に変換してから保存する必要があります。

出力データを得ること以外が目的のプログラムの場合

VBAは入力データを加工して出力するだけが能ではありません。

ユーザーの入力結果をチェックするためのツール

たとえば、勤務実績の入力の際に、17:00とすべき所を17:ooになっていないか、など入力の間違いを検知することもできます。

その際、間違っている旨をメッセージボックスで表示させるのか、メッセージを出さずに自動で17:00に変換するのか、メッセージボックスを出した上で未入力の状態に戻すのか、いろいろな対応が考えられます。

ユーザーに聞き取りするだけで無く、自分でも使ってみましょう。

よかれと思って出したメッセージボックスが使ってみると煩わしく、未入力の状態に戻してセルの色を変える、正しい値を入れると色が元に戻る、と言うような機能の方が良い、など気づきがあります。



以上、出力データについて深掘りするだけでいろいろと出てきます。他にも

  • 保存場所はユーザーに選択させるのか/勝手にどこかに保存するのか
  • 元データは残すのか/不要なのか
  • メール配信するのか/メールにデータを添付して送信する直前で止めるのか

と言った出力データをどのように提供するのか、と言った事も考えられます。

単に頼まれた自動化を実現するツールを作成するのでは無く、どうすれば使い勝手の良い、気の利いたモノにできるか深掘りしてみましょう。

そして、それは喜んでもらえるだけで無く、自分の実力向上にもつながります。一歩上の業務改善に踏み出しましょう!