はじめに
Excelファイルを共有すると、複数人でデータを入力することができます。しかし、人によって入力パターンが様々で、なかなか整合性のとれたデータベースにすることはできません。やがて、データは日増しにどんどん増えていき、いずれExcelでまかないきれなくなるものです。
特に、大量のリストにおいてVLOOKUPなどの関数や数式を多用すると、Excelファイルが重くなって困った……ということはないでしょうか。
そこで今回は、Excelでデータを管理している方を対象に、ExcelとAccessの違い、ExcelからAccessへ移行するメリット、リレーショナルデータベースの構築、および、Excelデータファイルのインポート方法などを紹介します。
ExcelとAccessの違い
まず、データ入力におけるExcelとAccessの違いについて簡単に下表にまとめました。
Excel | Access | |
---|---|---|
データの最小単位 | セル | レコード(Excelに例えると1行単位) |
データ保存のタイミング | ファイルの保存を行ったとき | 1つのレコードの入力/編集が終わったとき |
何でも入力OK? | データの入力規則が設定されていない限り、どんなデータでも入力できる | ある規則に従ったデータでないと入力できない |
複数人でひとつのデータベースにデータを入力する場合、Excelでは、例えば意味が同じでも、全角/半角、ひらがな/カタカナなど、入力者によって方法が異なることがあるため、データの整合性が取れなくなる場合があります。一方、Accessでは、一連の情報をコードとして入力し、そのデータ型(文字列や数値)を制御することにより、整合性が取れたデータを蓄積することができます。
特に、一つのデータ保存のタイミングは、ExcelとAccessとでは根本的に違います。Excelではファイルを保存するコマンドを実行しない限りデータが保存されませんが、Accessの場合は一つのデータの入力が完了した時点で保存されます。
Accessにおいてデータ入力以外で保存する必要がでてくるのは、テーブルの作成やテーブルやフォーム、レポートなどのデザインの編集、リレーションシップ、マクロ、モジュールなどの作成や編集後になります。データの入力は自動保存されますが、それ以外の変更については保存するかどうかの確認メッセージが表示されます。
Accessへ移行するメリット
確かに、Excelでも簡易的なデータベースを作ることができますが、関数などの数式の数が増えていくにつれて、Excelのファイルが重くなってしまいますよね。
次々とデータ入力しなければいけないのに、データが増えれば増えるほどパフォーマンスが悪くなるのでは、時間がかかってしまい、とても非効率です。
しかし、Accessに移行することによって、そのような問題は一気に解消されます。
Accessでは大量なデータの取り扱いに優れ、データの数が増えてもスムーズに入力することができるので、効率的に作業が行えます。
商品コードなどのマスタテーブルと、データを蓄積するテーブルを用意し、ExcelのVLOOKUPなどの関数や数式を入れる代わりに、マスタテーブルと関連付けたクエリを使えばいいのです。
Accessで適切にデータベースを構築していくことによって、将来、本格的な別のDBへの移行もしやすくなります。
データベース構築のポイント
フィールドの多いテーブルを作らない!
Accessは他の本格的なDBとは異なり、画面を選んでいくだけで誰でも簡単にデータベースを構築できる、とても便利なツールです。しかし、普段Excelを使ってきたユーザーがAccessでデータベースを作ろうとすると、Excelのシートと同じ感覚でAccessのテーブルを作る傾向があるので、結果的にやたらとフィールドの数が多い巨大なテーブルになる可能性があります。
売上ID | 顧客ID | お客様名 | 購入日 | 商品コード | 商品名 | 単価 | 数量 | 金額 |
---|---|---|---|---|---|---|---|---|
1 | 6001 | 山田太郎 | 10/01 | 1001 | シャンプー | 1,200 | 1 | 1,200 |
2 | 6002 | 鈴木花子 | 10/02 | 1005 | 化粧水 | 2,500 | 2 | 5,000 |
3 | 6001 | 山田太郎 | 10/02 | 1002 | リンス | 1,200 | 1 | 1,200 |
4 | 6003 | 佐藤次郎 | 10/03 | 1003 | ヘアトニック | 2,500 | 1 | 2,500 |
5 | 6004 | 佐野洋子 | 10/04 | 1007 | ファンデーション | 3,000 | 1 | 3,000 |
6 | 6004 | 佐野洋子 | 10/04 | 1009 | マスカラ | 1,200 | 1 | 1,200 |
7 | 6004 | 佐野洋子 | 10/04 | 1006 | 乳液 | 2,300 | 1 | 2,300 |
8 | 6004 | 佐野洋子 | 10/04 | 1005 | 化粧水 | 2,500 | 1 | 2,500 |
もし、たくさんのフィールドを持つ巨大なテーブルになってしまった場合は、そのテーブル中でフィールドの要素を分類して、複数のテーブルに分割できないかどうか確認してください。巨大なテーブルで構成されていると、将来、他のDBへの移行が困難になるので注意してください。
テーブルは、データベースの基本です。テーブルを適切に構築していくことがポイントです。
ちなみに、一つのテーブルの最大フィールド数は255という制限があります。詳しくは、Microsoft Office Onlineサイト内、Access の仕様を参照してください。
テーブルは単なるデータの入れ物にすぎない
Excelのシートではどのセルにも好きなように数式を入れて計算することができますが、Accessのテーブルでは演算ができません。テーブルはデータの入れ物に過ぎないのです。
ルックアップウィザードを使って他のテーブルの値を参照することはできますが、実際にテーブルに入る値はその外部キーになります。
上の例のように単価に数量を乗じた金額を計算するには、テーブルに金額を代入するフィールドを作らず、クエリで演算フィールドを作成します。
顧客コードに対する顧客名や、商品コードに対する商品名などを参照したい場合においても、テーブルでフィールドを作らず、クエリを用います。