表計算ソフト(Excelなど)と、データベース・ソフトのちがいって、なんでしょうか?
「データベース」というと、Microsoft office姉妹ソフトであるAccessがすぐに思いつくかもしれません。
エンジニアが多用する製品には、Oracle DatabaseやClaris FileMakerなどがあります。
しかし、もっと身近なところでは、業務用会計ソフトや家計簿ソフトなども、用途を「会計」に限定したデータベース・ソフトといえるでしょう。
データを保存し、検索できる点はかわりませんが、表計算ソフトは、入力の自由度が高いものの、処理できるデータ量には限界があります。
Microsoft公式ホームページにExcelの仕様と制限が明示されており、Microsoft365シリーズなどであれば、ワークシート行数・列数は最大1,048,576 行・16,384 列と規定されています。
しかし、規定ぎりぎりの大きなデータをExcelで操作すると、実際にはブック容量がおもくなり、起動や動作もおそくなり、実用にたえられないことがあります。
営業活動に必要なデータには、100万件超のレコードを有するものもあることから、このような資料をあつかうためには、データベース専用ソフトを用意する必要があるのです。
一方、そこまで大きくないレコード(例;取引先台帳や商品管理台帳、業務日報のように、せいぜい数百〜数千件レベルのデータ)であれば、わざわざデータベース・ソフトを用意しなくても、Excelだけで”どうにかなってしまう”ことがあります。
今回は、データベース・ソフトのかわりにExcelを活用する場合に、おぼえておきたい検索・入力補助機能について説明します。
Excelをデータベースとして使うなら検索はフィルターよりもスライサー
データベースに求められる最大の機能は「必要な時に」「必要な情報を」最速で検索・抽出できることです。
Excelで「抽出」といえば、まず最初に「フィルター」が思いうかぶのではないでしょうか?「データ」タブのリボンに標準設置されている、ロート(漏斗)アイコンの機能です。
たしかに「フィルター」で必要な情報を取り出すことはできますが、それが「最速か?」というと、ちょっと…。ダイアログボックスで、1つずつ取り出すべき情報をチェックしないといけませんからね。
↑ 個人情報テストデータジェネレーターが自動生成したダミーデータで、実在する個人を特定するリストではありません。
このようなシート状の資料をデータベース活用するために、Excelの「テーブル」機能を使って、テーブル化しておくと便利です。
テーブル化とは、単なるデザインや書式の問題ではなく、「ひとまとまりの情報が、1つの表(テーブル = データベース)である」と、Excelへ認識させる作業だと考えてください。この設定をすることで、その後、「スライサー」や「フォーム」などのデータベース機能を利用できるようになるのです。
対象のセルを選択した上で、[ホーム]→[テーブルとして書式設定]アイコンをクリックすると、いろどりゆたかなテーブル・デザインが一覧できます。色味などは、自分で見やすいと思えるものを、お好みで選択してください(元表に罫線やセル結合、その他の装飾が含まれると、うまくテーブル化しないことがありますので、ご注意ください)。
テーブルとなった一覧表にカーソルを合わせ、[テーブルツール]→[テーブルデザイン]タブ→[スライサーの挿入]ボタンをクリックして、ダイアログボックスを表示させてください。
データ抽出条件としたい項目へチェックを入れると、テーブル上にスライサーが表示されるようになります。
たとえば、サンプル住所録から「東京都・千葉県・埼玉県・神奈川県」の「県庁所在地、もしくは都心3区(千代田区・港区・中央区)在住者のみを抽出」という条件で検索・抽出を行うとしましょう。
検索条件が1項目だけであれば、フィルターでもスライサーでも、あまり検索にかかる手間は変わりませんが、検索条件が複雑になるほどスライサーの使いやすさが実感できるようになります。
フィルターの場合、まず
(1)「都道府県」フィールドで対象レコード抽出を終えてから、もう一度、
(2)「市区郡」フィールドにフィルターをかけなおす必要があります。
一方、スライサーの場合には、あらかじめ検索項目のスライサーを作業中のシートに複数表示しておけば、複数の複雑な検索条件を視覚的に操作することができ、選択/解除の繰り返しで、何度でも検索条件を変更できるようになります。
「検索」にかかる手間については、フィルターよりスライサーの方が、はるかに簡便だといえるでしょう。
フォームで、マクロ要らずのカード型データベースソフトになります
VBAを習い始めた人が、よく「マクロでデータ入力フォームを作ろう」という課題に取り組むことがあります。
データの最終行を検知して、その後ろに、新たなレコードを追記するプログラムです。
Excelワークシートに、いわゆる「カード型データベース」のような入力インターフェースを作るためのアレンジです。
しかし、これも実は「テーブル機能」を使えば、シンプルなものは、VBAプログラムなしで利用することができるのです。
デフォルトではリボンに表示されていない「フォーム」をよびだすところからやってみましょう。
[ホーム]→[オプション]を選択して、Excelのオプション・ダイアログボックスを表示します。[リボンのユーザー設定]→[リボンにないコマンド]の中から[フォーム]を選択し、自分が使いやすいリボン位置に、ボタンを表示させます。
次に、すでにテーブル化したセル上で、このフォーム・ボタンを押してみてください。
自動生成されたフォームが一発で表示されました。
このフォームでは、テーブル内の必要なレコードを検索することもできますし、空白フォームに新規レコードを入力すれば、自動的に最終行に新レコードを追記してくれます。
必要最低限の入力フォームなら、これで充分! わざわざVBAの入力フォーム設計をすることも、必要ありませんね。
まとめ
ルーティンワーク用の小さなデータベースは、Excelだけで構築可能。テーブル化&スライサー/フォーム活用で、検索力を高めましょう!
数百万レコード以上あるデータの固まりを、Excelで処理することは困難です。
そのようなデータは、やはりセキュアなデータベース・ソフトの中に取り込んで、使いやすいようにカスタマイズしていきましょう。
しかし、日常業務でひんぱんに使うデータの固まりは、数百とか、数千とか、せいぜい万の単位だったりしませんか?そのような資料のデータベース化は、Excelひとつで十分なのです。たとえ大きな一覧シートになったとしても、テーブル化しておけば、スライサーでラクラク複数条件検索可能!
入力フォームだって、プログラムを組まずに、自動で提供してもらえるのです。
このような便利機能をとことん使いこなして、ご自身の情報検索力を高めていきましょう!
Excelのデータベース活用をきわめると、本格的なデータベース・ソフト活用について勉強をはじめた時にも、その理解度が格段に上がりますよ!
使用頻度はそれほど高くないExcel関数でも、機能だけはおぼえておけば、資料作成力が格段に上がるかもしれませんよ。