ExcelとAccessの違いをExcelの目線で言うと・・

ExcelとAccessって何か似てないか?

「ExcelとAccessの何が違うのか全然わからない」

これは、はるか昔に私自身が悩んだ言葉です。どれくらい前かは忘れましたが・・(笑)

ExcelとAccessは、「データを管理する」という意味では似たような機能を有しています。
が、管理側から言えば、Accessのほうが勝手が良い反面、入力の方法等で制約や条件が厳しいのですね。

当ページでは、具体的な技術というよりもExcel側目線に沿ってAccessとの「表面的」、「機能的」な違いを説明したいと思います。

とは言うものの、技術的な話も出たりしますし、やや誇張して説明する内容もあったりします。
いずれにしても全てを語るのはできないのでその一端を説明したいと思います。
ExcelとAccessは何が違うのか?


「シート(Excel)」と「テーブル(Access)」の違い

Accessには、「テーブル」以外にも、「クエリ」、「レポート」、「フォーム」など言われるオブジェクトがいくつかあります。

ここでは特に「テーブル」と、Excelの「シート」についての違いを説明したいと思います。
ExcelとAccessは何が違うのか?

テーブルを説明する前に、Excelのシートについて、ちょっと乱暴に敢えて言うなら、Excelは「1つのシート」があれば何でもできますよね。

シート(セル)に文字を入力するだけでなく、図形や画像を貼り付けることもでき、印刷時のレイアウトも一つの同じシートで作成(調整)することができます。

一方のAccessでは同じ形を作るをすることは可能ですが、残念ながら「テーブルだけでは作れません」。
他のオブジェクトを併用しながら作ることができます。そして、その分の手間が増えます。
というのも、Accessではデータを管理するという特徴を最大限生かすため、色々な部分で制約が出てくるからなんですね。

Excelをメインとしているユーザの方々が最も疑問に思う典型は「テーブル」ではないでしょうかね?
見た目上は、Excelシートとほぼ同等の形をしていますから・・

テーブルは、Excelのシートと大差ない内容に見えてしまいます。「これの一体全体何が違うというんだね!?」
Accessを学び始めた当初、私自身がとても疑問に思っていたので取り上げてみたいと思います。

たとえば、「Accessと比べる」という点からExcelの特徴を見ると、Excelでは・・

  • 文字の色を変えられる
  • 文字の大きさを変えられる
  • セルを結合できる

など、やりたいことを「1つのExcelシートで」ほぼそのまま実現できます。

一方、Accessでは「テーブルにはこのようなことができません」が、それは一体なぜでしょうか?

バージョンによっては「テーブル」にもExcelライクな使い方もできるようになってきましたが、これはAccessの補足的使用方法だと思います。
Accessでは「テーブル」の存在自体は必須ですが、イメージ的にはあくまで裏方的に使い、そのまま表に出てくることはない(クエリ、フォーム、レポートなどを通じて表示される)からです。
Accessでも文字などが変更できるようになってきた

Accessのテーブルは、データを入れておくという「データ格納庫的な役割」を持つからですね。

言い換えるならば、
「テーブルでの文字の装飾などは、テーブル上では、求められていない」、

あるいは、
「テーブルでは、データ格納庫以外の使い方をしてはいけない(そういう使い方ができない)」

とも言えます。

この考え方は、Excelのシートの使い方とは「真逆」ですね。そして、だからこそExcelユーザの方には意味がわからなくなってしまうのだと思います。。

まとめますと・・

  • Excelのシート:データ以外にも色々な装飾ができる
  • Accessのテーブル:データを入れるのみ(装飾は「レポート」で行う)

これからExcelからAccessへと作業を広げていく際には、この違いを把握したほうがよいように思います。

Excelで「データの入力規則」を使うのはなぜか?

先に挙げたテーブルでは、制約があり、「Excelのシート(セル)ではできることが、テーブルではできない」ことを説明しました。
それはなぜでしょうか?

もしも、Excelの機能である「データの入力規則」を使ったことのある方ならば、テーブルの制約の理由は、この「入力規則を使う理由」とほとんど同義に思います。

データの入力規則
データの入力規則とは、セルに入力できる値に制限をかける機能ですね。

たとえば、この画像のように、セルに「日付(仕入れ日)」に制限値を設定します。
すると、設定をしたセルでは、この制限を超えた入力ではエラーとなるメッセージが表示される仕組みです。
データの入力規則に反した入力はエラーとなる

すでにこの機能を使ったことのある方にお尋ねしますが、「なぜこの設定を行っているのでしょうか?」

もしかしたら、回答にばらつきがあるかもしれませんが、おそらく多くの方が「予期しない値の入力を防ぐため」と答えるのではないかと思います。

これが、「Accessのテーブルの制約理由と同義」なのですね。

入力規則の例で言えば、Accessのテーブルでは、「テーブルの作成と同時に規則を設定」しなければなりません。縛り方がExcelよりももっと根本からになります。
要は「厳格」なほど必要な制約になっています。

制約のかからないデータ(例:セルの結合)は、潜在リスクを回避できない

Accessが制約をするのは管理を厳格にするためというのは上記説明したとおりです。

具体的にはそれによってどう影響があるのか、次にExcelの「セルの結合」を使って説明します。

最初にAccessのテーブルでは、Excelでいうセルの結合ができません
セルを結合したければ、「レポート」という部分で行いますが、テーブル(というかAccess)ではそもそも「セル」、「セルの結合」という概念がないのですね。

下記の表は単純な「品目リスト」ですが、以下のように日付セルを一部結合します。
繰り返しますが、この結合はAccessのテーブルではできません

いずれにしてもExcelでは結合しているセルを含めた集計を行うと正しい結果が返ってきません

■SUMIFを使った集計(正しい結果が返ってくる場合)
SUMIFで正しく値を返す

■セルを結合すると値が正しくない
複数のAccessオブジェクトを使って請求書を作成する
この場合は、結合前の上のセルの値だけが計算対象となっていて、下の「1月3日 500円」無視されている、と判断できます。

念の為ですが、上記のセルの結合の例にある「A~C列」と「E~F列」の部分ですが、仮にセルの結合がなくても、このAccessのテーブル上では画像通りに一緒に表記できません。
これが前項の”テーブルでは、データ格納庫以外の使い方をしてはいけない(そういう使い方ができない)”という部分に当てはまります。
(このような表記は「レポート」を使って実現できます)

これはほんの一例ですが、Accessではデータの集計で不整合を発生させないために細かく制限(例えば結合できない)していると言えます。
一方、Excelではこのような制限がない為、事前に想定しておかないと結果だけでは正しいかどうかの判断ができない場合がありますので注意ですね。

Accessは「データ」と「表示(印刷)」を分けて管理する

上記で挙げた「Excelシートでできること」が「Accessのテーブルでできない」のはなぜでしょうか?

それは、Accessではデータを可能な限り確実に管理するために規制、制約をかけているためです。

Accessは(やや小規模向けな)「データベース」ソフトです。簡単に言えば、データを管理、集計(加工)することに特化しています。その中で「データ」と「表示」という部分を明確に切り分けていますが、Excelでは同じシートで(データ)入力、表示(印刷)できるという違いがあります。

たとえば、請求書を作るときAccessでは以下のようになります。
Accessはデータ(テーブル)と表示(レポート)を分けている

これは一例ですので、レイアウトが同じでも作り方は千差万別です。ここで言いたいのは、この請求書は・・

  • テーブルはデータを入れるためだけの用途
  • レポートは、データの表示を含めたレイアウトをするための用途

と、作業の役割を分担している点です。
Excelでは、この仕組がなくても1つのシート上に作れますよね。
Excelで作成した請求書
しかし、たとえば上記のExcelの請求書の場合、1枚の請求書で明細の件数が10件までですね。仮に11件あったらどうするか?あるいは20件だったら?
10件以下ならば、問題なく使えても、11件以上あると中の数式(のセル参照範囲)やレイアウトも再度調整しなくてはなりませんよね。

しかしAccessでは、(作り方によっても変わってきますが)このようなケースでも、入力された件数によって対応することは不要です。
Accessではこのように「機能ごとに分けたものをまとめる」ことにより対処できる仕組みになっています。

Accessの「入力と表示を分ける」部分の仕組みを活用して作成したファイルがありますので関心ある方はダウンロードしてみてください。
Excelで関数だけを使って月別総括集計表を作る1
Excelで関数だけを使って請求書を作成する
これらの表でも、「件数が増減したときのセルの設定が難しい」などExcelならではの制約を抱えていますので、当ページの内容も参考にして見てもらえると理解が深まるのではないかと・・

一見するとExcelのほうが効率的に見えるかもしれませんが、くり返しデータを入力し、都度新しいデータを反映(表示→印刷)させるような業務であれば、Accessのほうが管理効率がよいと思います。
(そもそもAccessの存在意義はここにあるのかと思います)

データに関して

Accessは簡単に言えば、テーブルには文字の入力しかできません。平たく言うと、そういうルール、役割になっています。
見た目はExcelシートの表と同様に、ただ「入力されたデータを溜めていく」。これがテーブルの役割ですね。

ただし、このルール、役割は徹底されます。

そして、このルールが徹底された上に表示が成り立ちます。

なお、表示では、「入力された値そのまま」ではなく、通常は「加工された値」が表示されるケースが多いように思います。
そこで「クエリ」が登場します。
クエリは、「テーブルのデータを加工する」役割を持っています。

表示(設定)に関して

データと別に管理され、表示(印刷等)するときだけに使われますが、これは「レポート」への表示(出力設定)です。
「表示したいデータ」はここには入力しません。「入力の役割はテーブル」ですね。(レポート上でもやろうと思えばできますが、このような使い方をするならばAccessの持つ恩恵が減ってしまいます)。

このように、「Excelは1つのシートで完結できる」という部分が、Accessでは、いくつかのオブジェクト(テーブル、レポートなど)を一つにまとめて作り上げることになる部分で異なります。

「ExcelとAccessのどちらが良いか?」それは状況次第

これまで説明したように、ExcelとAccessではそもそもの特徴が異なります。そのため、「一般的にどちらが優れているか」という比較は、あまり意味が無いように思います。

Accessは、Excelと比べるとデータ管理で分があります。が、その分覚えるべき点も増えます。

ソフトの特性だけでなく、自社で専門となるべきスタッフが準備可能かなども考慮する必要があるかもしれません。場合によっては専門家にも確認する必要があるかもしれません。
(ExcelよりもAccessを先に触れると「Excelが使いにくい」という人もいます)

またExcelでもAccessような仕組みにすれば、(規模にもよりますが)稼働に耐えられることも十分に考えられます(弊社では過去に100万件以上の名寄せ作業にExcelを使用しました)。
一方で複数のPCから安定した使い方をしたい、他システムとデータの連動をする等を考慮するならば、Accessの方が相対的には適しています。

このように色々な要素をもとに「どちらが良いか」、「どちらが適しているか」を判断することがベターであるとも言えます。

タイトルとURLをコピーしました