道具としてのExcel活用

Excel専門家が語る、
AccessとExcelの根本的な違いとは?

ExcelとAccessの優位性

当社が主にExcelを前面に出した情報システム化を専門としていることもあり、お客様からよく「AccessとExcelはどちらが優れているか」的な質問を受けます。

かつて(Excel2003まで)は、Excelで扱える行の上限が65536行だったこともあり、大量データはAccessでないと扱えない、というのが常識でした。

しかし、2007以降のバージョンからは100万行以上のデータを扱えるだけでなく、列方向(横方向)も168384列まで扱えるようになり、大量データでも扱えるようになっているので、以前のような単純な比較が難しくなっています。

 

 

そもそもAccessは、ただのDB(データベース)ソフトではない

Accessの本当のすごさ(他のDB環境との決定的な差別化)

Accessの最初のバージョン1.0が登場したのは、1992年の暮れのことでした。当時は日本語版が存在せず、筆者は秋葉原の量販店で英語版を購入したのを覚えています(たしか、3万円台でした)。

日本語版が登場するのはその翌年ですから、日本では93年以降に普及したと言えます(バージョンアップの扱いを受けられず、正価で再び購入しました)。

当時パソコンでリレーショナル型のデータベース環境が存在していなかったので、まさに革命的な出来事として受け止められていました。更に、データをためる器としてだけでなく、データ入力のための画面や、蓄積されたデータを活用したレポートの作成などが簡単にできる点は、従前のDBを使っていた立場のものとしては、晴天の霹靂とも言える利便性革命でした。

今でもそうですが、本来DBとは、データを蓄積して検索する為の「器」を指します。例えばSQL ServerやOracleは、大量のデータを高速かつ安全に検索するためのエンジンとしての機能であり、画面やレポートを作りたければ、それぞれが任意のプログラム言語で作成するのが常識で、本体にそれを補助する機能はありません。つまり、Accessの革命的なすごさは、データ操作をSQLでできるというリレーショナル性とともに、業務上は当然にセットになる入口(画面)と出口(レポート)を作る機能が一体化している点にあるといえます。

なお、似たような処理環境として「File Maker」がありますが、こちらは(リレーショナル型ではなく)カード型と呼ばれるもので、処理の自由度などが決定的に異なります。

 

Ver1.0の基本設計が、今でも残る(負の遺産)

ところで、今では当たり前のネットワーク環境(社内LANを含む)ですが、パソコンでネットワークに接続できるようになったのは、ネットワークOSであるWindowsNTが登場して以降です。これが1994年ですから、Accessという製品を開発している頃(発売は1992年12月なので、それ以前)には、パソコンでネットワークに接続して、複数名が同時に接続して使うことは想定されていませんでした。

皮肉なことに、データを一元管理するための「DB」でありながら、Accessは複数名が同時に使う前提ではない仕様を未だに引きずっており、同時に更新をかけに行くと壊れることが少なくありません。業務用に安定稼働をさせようとした場合は、相当の工夫をして使わないと、いつ壊れるか分からないというリスクがついて回ります。

 

その後のバージョンアップで変わったこと、変わらなかったこと

その後、バージョンアップを繰り返す度に性能が上がっていくのですが、基本的な「DBの中から情報を取り出す」機能については、実は初代からあまり変わっていません。これはSQLというしくみ自体が、当初から完成度が高かったから、大きく変更する必要がなかったとも言えるでしょう。扱えるデータの件数についても同様で、パソコンの性能が上がった分、実用になるキャパが拡大したと言った方が正しいかもしれません。

一方、ユーザが登録する画面を作る機能やレポート作成の機能は高度化しており、Excelにはできないようなレポートが簡単に作れるのが特徴です。

何故か、バージョンアップする度に、以前のバージョンで作った画面(Form)やレポート(Report)が使えなくなるのが泣き所でした(最近は改善されたようですが)。

 

Excelにできない、Accessだけの機能とは

ちょっと情報システムに詳しい方ですと、AccessはDB操作言語であるSQLを使って処理ができる、という認識をされているかと思います。

しかし、実のところExcelにもMS Query(現在は、Power Query)という機能がついており、SQL操作が可能です。つまり、単にSQLを使ってデータ操作をするだけなら、両方とも「可能」です。

それでは、Accessにしかできない特徴的な機能は何でしょうか?

細かい違いはさておいて、よく使う部分では、登録用画面がわずか数十秒でできてしまう機能(Formのウィザードを使います)や、同じく複雑なレポートを数十秒で作ってしまう機能(Reportのウィザード)は、Excelでは絶対に真似ができない機能です。

この他、最近流行の「ノンコーディングで作れるRPA」同様、プログラムを書かずして(メニューから処理を選択するだけで)、一定の処理ができる「マクロ」機能も、Accessならではの特徴です。Accessの「ノンコード開発」機能を知っていれば、わざわざ「ノンコード開発」環境を導入する企業は、激減するかもしれません。

GoogleのApps Script(GAS)がこれによく来た機能なのですが、先日Googleのデモを見に行った際、「これは、要するにAccessのようなものですか」という質問に対し、答えにくそうにではありましたが、説明員が肯定していました。いかに先進的だったかがわかります。

 

Excelにしかできないと思われている機能

逆に、Excelしかできないと思われている「フィルタ」機能は、Accessでも使えます。

意外なところでは、Pivotテーブルも、グラフ描画も、Accessで使えました(注)。

こうしてみると、案外両者は似たもの兄弟なのかも知れません。

(注:Access2010までは使えたのですが、残念ながらAccess2013で廃止になってしまいました)

 

Excelにしかできないこと

一方、Excelにしかできない、業務効率に影響のある機能を挙げてみます。

  • セルに着色する
  • セルに下線や枠線を引く
  • 任意の位置に、コメントやオブジェクトを配置できる
  • ファイルに結果を保存する
  • 範囲でコピペする
  • オンライン版(ブラウザで動作)が存在する

まだまだありますが、これが使えなくなると困る、という機能が意外と多いのではないでしょうか?

機能ではありませんが、標準的なOfficeのライセンスにExcelは含まれますが、Accessは別途購入するか高額プランを選択する必要があるのも、留意が必要です。

 

Excel/Accessそれぞれに向くシステム化対象とは

Excelでシステム化すべきケース

当社はExcelをUI(利用者が使う画面や印刷用帳票)に最大限活用する、専門企業です。

20年前にこの仕事を始めた時には、まだExcelで企業向けのシステムを手がけるところが皆無で、ネットで調べても「できない」的な論調の内容ばかりでしたから、優位性をアピールすることに必死でした。

20年もこうした開発をやっていると、実際にExcelで実現すべき情報システムの適性が見えてきます。

特に大きいのが入力画面系で、手持ちのExcelからコピペで登録する、といった使い方をするケースが意外と多いのです。

また、最近のシステムだとブラウザで画面を作るのですが、これだと「一時保存」ができません(わざわざ機能化していれば別ですが)。Excelならファイルで保存しておき、清書になったら別のフォルダに配置する、といった単純な運用で説明がつきます。

次にレポート系では、作成されたレポート(出力物)に直接コメントやセル着色などの形で記入ができる点が支持されています。特に会計系では、「どこまでチェックしたか」や「後で忘れないように補足メモを残す」といった行為が業務上重要な意味を持っており、直接書き込めるとしたら、事実上Excelしか選択肢はありません。

更に、取引先毎に伝票形式が微妙に違う、といったケースでも、Excelなら行列を入れ替えながらレイアウトを変更する、といったことが利用者側でもできます。

このようなExcelのメリットを活かせる業務であれば、わざわざ高い費用と長い開発期間をかけて、ブラウザを使ったシステムにするメリットはありません。

 

Accessでシステム化すべきケース

一方、短期間に大量の入力画面/出力帳票を量産するのであれば、圧倒的にAccessの方が生産性が高いです。テーブルやクエリが存在していれば、それこそ1分以内に帳票や登録画面が作れてしまうので、実用性には目をつぶってでも大急ぎで間に合わせる必要があるような時には、信じられないような生産性をたたき出します。

少なくとも、一般的に「ちゃんとしたシステム」と思われているブラウザを使った情報システムに比べ、ExcelやAccessを使ったシステムのほうが、柔軟性に長ける傾向があります。つまり、すぐ修正できるのです。

本当か?と思ったら、是非両方式(ちゃんとしたシステム vs Excel/Access)で相見積もりをとって下さい。初期費用だけでなく、その後の運用の柔軟性の差に、唖然とするはずです。

 

本来のデータベースシステムにするには

Accessが革新的であったことは事実ですが、だからといってSQL ServerやOracleなどのDBサーバが不要になる、と言う話ではありません。

そもそもAccessは大量のデータをため込むと、等比級数的に動作が遅くなります。また、大勢で使おうとすると、予期せぬ様々な事態を招きます。大量のデータを共有しようという目的の場合、矛盾でしかありません。

DBサーバは、Accessのような簡単にクエリーや登録画面、レポートが作れる機能がない代わりに、大規模システムで高速・安全に動作することに集中しています。

このため、100万件のデータのなかから目的のデータを抽出するような場合、ExcelやAccessだと(作り方にもよりますが)数十秒~数分待たされることがあります。

これを、ExcelやAccessからDBを呼び出して、抽出後のデータを受け取るようにすれば、処理はせいぜい2,3秒で終わります。

こうしたことから、「従前のAccessのしくみを、クラウド上で共有したい」といったニーズに対しては、いったんExcelに移植してからクラウド化する方法をとります。

 

参考:Excel+DBの事例

なかなかイExcelとDBが組み合わせられるといってもメージが湧かないと思いますが、お時間があればこちらも参考にして下さい。

 

その他、機能だけでなく、運用も含めたExcelの活用事例について、こちらもご参照戴ければ幸いです。