石橋君(以下,石)●博士,ご無沙汰です!

博士(以下,博)■おお,石橋君,久しぶりじゃな。

石●はい,休み中は忙しくて。

博■ほぅ,何をしておったんじゃ?

石●ちょいと副業を。

博■副業?

石●はい!で,博士にお願いが。

博■なんじゃ,またか。君はいつも困った時にしか顔を出さん。

石●いや~,照れるじゃないですか。

博■誰もほめてはおらんがな。まぁよい。君と漫才をやっておる暇はない。で,どうしたんじゃ?

石●はい,Microsoft Excelで名簿を作ったのですが,会員が増えて条件に合う相手を探すのが大変になりまして。そこで,ちょちょいとマクロを作っていただこうかと参上し次第です。

博■会員? 相手? 何の名簿じゃ?

石●はい,お見合い紹介所の会員名簿です。

博■石橋君,まさかいかがわしいサイトとかかわってはおるまいな?

石●博士,もっと僕を信用してくださいよ。ネット上のサイトじゃありません。個人でやってるお見合い相手の紹介所です。

博■ん~,石橋君だから信用できんのじゃが…よかろう。いろんな条件を設定して,それに合う会員をピックアップすればよいのじゃな?

石●さすが,博士呑み込みが早い。博士,マクロが完成したら,とびっきりの美人を紹しますよ。

博■石橋君,そういうことは先に言いたまえ。では,スペシャルなヤツを作ってやろう。

石●まったく,調子がいいんだから。

博■何をもごもご言っておるんじゃ? 作業にとりかかるぞ。

 お見合い相手?のデータが増えすぎてExcelでうまく検索できなくなった石橋君は,Excelのことなら何でも知ってる博士のところに相談に来ました。Excelユーザーの方なら,データが増えすぎて条件検索がうまくできなくなったという経験は1度ぐらいあるのではないでしょうか。自分で解決できない石橋君は,博士をうまくおだてて便利なマクロを作ってもらおうという魂胆のようです。

 すっかりのせられた博士は,すぐに作業に取りかかるのですが,どうやらExcelではなく違うソフトを使うみたいです。石橋君の目論見はうまく成功するのでしょうか?

大量データの検索にはデータベースが便利

博■ところで石橋君,Microsoft Accessを知っているかね?*1

石●はい,データベースのソフトですよね?

博■そうじゃ,ではデータベースとは何じゃ?

石●え~っと…データの共有化,統合管理,高い独立性を目的として,データをあらかめ定義した形で集中的に集積し管理する仕組み*2です。

博■そうじゃな。で,平たく言うとどういうことじゃ?

石●そこまでは書いていません。

博■…。まぁよい。理屈よりも実践じゃ!

石●博士? 気分が乗ってるところ申し訳ないのですが,僕はExcelのマクロを作ってほしいんですけど。

博■それじゃ! Excelのユーザーは,何でもかんでもExcelでやろうとする。確かにExcelは多機能で,簡易データベースとしても利用できるが,基本的には表計算のソフト。石橋君も,このあたりでAccessを勉強してみてはどうかな?

石●なるほど。で,Accessって便利なんですか?

博■石橋君にしては鋭い質問じゃな。例えば,石橋君が希望する条件検索のマクロをExcelで作るためには,当然VBAの知識とテクニックを必要とする。しかし,Accessにはクエリと呼ぶ機能があって,簡単な式を作るだけで複雑な条件抽出ができるんじゃ。

石●おぉ,それは素晴らしい。それなら僕でもできそうだ。博士,他にはないんですか?

博■そうじゃな,データベースにはたいていリレーションシップ*3というものがある。例えば,PCの部品を管理するデータベースを作成したとしよう。それには,部品のスペック表と仕入先の一覧表がある。二つの表に「仕入先ID」という共通のフィールドを作って,それをリレーションシップで関連付ける。すると,二つの表が互いにリンクされて,仕入先にどの部品を発注しているのかといったことが一目でわかるのじゃ(図1)。

図1●部品表と仕入先一覧という二つの表がある(a),仕入先IDという共通のフィールドを使って二つの表にリレーションシップを設定する(b),すると仕入先一覧で部品表を同時に参照できる(c)
図1●部品表と仕入先一覧という二つの表がある(a),仕入先IDという共通のフィールドを使って二つの表にリレーションシップを設定する(b),すると仕入先一覧で部品表を同時に参照できる(c)
[画像のクリックで拡大表示]

石●それは,一つの表にできないんですか?

博■もちろん,できるさ。しかし,考えてもみたまえ。部品の細かいスペック項目の横ずらずらと仕入先の住所や電話番号,担当の名前が並ぶのはスマートじゃない。それに,ハードディスクとCD-ROMドライブはA社,きょう体と電源はB社といった具合に,同じ仕入先から異なる部品を仕入れている場合は,表に同じメーカーの情報を何度も入力することになる。

石●なるほど,部品表と仕入先一覧という二つの表にすれば,部品表に入力するのは仕入先IDだけで済むんですね。

博■そういうことじゃ! 複雑なデータは複数に分けて関連付ける,つまりリレーションシップを構築すれば,すっきりするということじゃ。

石●なかなか便利そうですね? ところでフィールドって何ですか?

博■それはExcelでも使う用語なんじゃがな。ここで説明するより,データベースを作りながら説明した方がいいじゃろ。

石●わかりました。じゃあ,早速データベースとやらを作りましょう。

 ということで,石橋君と博士はAccessを使ってデータベースを作成することにしました。すでにAccessをお持ちの方は,ぜひ一緒にAccessを動かしながら読み続けてください。お持ちでない方は,誌面を見ながら,Accessの操作方法やExcelとの違いを感じてください。