Excelの限界

記事
IT・テクノロジー
Accessで介護支援記録管理システムを作った理由-3

前回の続きです。
データベースを基本とするシステムををExcelで作りたいとき、操作の効率性などを向上させたい場合は、フォームやVBAを使ったほうが良いでしょうか。

私の経験では、テーブルに格納されるデータ(レコード)件数が少なく、あるいはデータを構成する項目(フィールド)数が少ないときは、直接テーブルを操作するか、関数を使って抽出したほうが効率的と思っています。
しかし、レコードの件数が数千、数万単位となり、しかもフィールド数が多い場合、さらに、フィールド数が少ない場合でも入力されるデータの内容が多岐にわたっている場合は違ってきます。

まず、レコード件数が多くなれば多くなるほど、自然と検索や抽出を行う操作が増えていきます。
さらに、例えば売上データから、品目別に売上高を計算しようとすると、品目数が多ければ、自分でフィルター条件を設定するだけで手間がかかります。
一方、関数でデータを抽出しようとする場合でも、調べたい品目数が増えるにつれて関数が複雑化し、計算用のワークシートも増えて、結果を表示する目的のシートが探しにくくなります。この点は、前回のブログでも触れました。
従って、この場合、ExcelのユーザーフォームやVBAを使ったほうが効率的、と言えるのでしょうか。

私は、このレベルになってくると、Excelでデータベースを操作しようとすること自体に意義を見出しにくくなる、と考えています。

Excelは極めて優秀なソフトです。
データベースまで扱える充実した機能性と、何より様々な姿に変わるワークシートという自由さを備えているため、このソフト一つで何でもできるのではないかと思わせるほどです。
しかし、そこには落とし穴もあります。
例えば、Accessと同じようにフォームを使って新しいレコードをテーブルに追加しようとすると、Excelではかなり長いVBAコードを記述しなくてはなりません。
Accessでは、レコードを追加するVBAコードは1行で済んでしまいます。

これは、Excelが元々表計算ソフトであり、ワークシートがセルの集合体から成ることに由来しているせいと思われます。
ある意味、Excelの限界と言えるのかも知れません。
思い起こせば、Excelのフィルター機能は、検索したレコードがワークシート上に本当に抽出されているのではなく、該当するレコード以外が単に非表示となっているに過ぎません。
ワークシートを様々に活用できるようにする、というベクトルの中でExcelは発展、進化を遂げてきたのであり、データベースを扱える機能もその中の一つ、ということです。

このような理由でExcelの価値が下がる、ということは全くありませんが、やはり「餅は餅屋」。
VBAのようなプログラミング言語で大規模なデータベースシステムを開発し、操作性を追求したいのなら、最初からAccessのような専門ソフトを使うべき、というのが結論です。

最後は"当たり前"のような話になってしまいました。
次回からは、なぜAccessなのか、ということについて語っていきます。
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す