Excel VBA以前のデータの扱い方(テーブル形式)
VBAで処理をする以前の問題として、そのデータが扱いやすいモノになっているかどうか はすごく重要な問題です。例えば下記のように営業マンの売上データがバラバラになっていたらどうでしょうか?
全ての表からデータを抜き出すのは非常に大変な作業となります。私たちにとってもコンピュータにとってもそれは非常に不幸です。しかし売上が1つのテーブルにまとまっていればSUM関数などを使って一発で合計金額を求めることができます。
現実のデータはこのようなキレいなモノばかりではなく、ほとんどが扱いづらいモノばかりです。それをVBAでゼロからゴリゴリコードを書いていては非常に大変です。プログラムで処理をかける前の下処理..というのは非常に重要な問題となってきます。
IPOの考え方
システムの開発や設計を考えるモデルとして、IPOというモノがあります。VBAで担当する部分は処理の部分であり、きちんとしたインプットがないことには期待する成果物を生み出すことができません。これはいくら腕の良い料理人でも、具材が悪いと美味しい料理が作れないのと同じです。
Input:入力
Process:処理
Output:出力
VBAを学ぶとコーディングに意識が向きがちですが、設計や開発の全体を見ながら「いかに楽してコードを書くか?」を考えることも段々と重要になってきます。
データベース形式で保存すること
コンピュータ(VBA)にとって処理しやすいデータとはどのようなモノでしょうか?それはテーブル形式で保存してあるデータのことです。テーブルとは日本語で表を意味しますが、テーブル形式で保持されたデータはコンピュータにとっても、私たちにとっても非常に扱いやすいモノとなります。
具体的には以下のような特徴を持った表のことです。
- 同じ行/列には同じ形式のデータを格納する
- 1つのセルに1つのデータを格納する
- レコードのデータは一意である
逆に以下のような点に気を付けなければいけません。
- 1シートに1テーブルにすること
- 空白、空行/列は入れない
- セルの結合はしない
上記に注意するだけでもグッとデータは扱いやすくなります。VBAで小難しい技を使うよりも、データをきちんとテーブル形式で保持しておく方がグッとコードを書くのが楽になります。そのデータは扱いやすいモノになっているか?をコーディング以前にしっかりと考えておくようにしましょう。
Discussion