概要

エクセルでデータを管理することは多いと思います。 このとき、フィールド(列)数が多く、情報量が多いデータを1つのテーブルに詰め込んで管理していませんか?

その状態では、データを入力・使用するときの作業の手間が増えてしまいます。 データを扱いやすく、活用しやすくするためには、以下の方法が有効です。

  1. 情報のまとまりごとに、 テーブルを分割 する。
  2. 分割したテーブルを連結して、使い勝手の良いテーブルを作成する。

これは VBAなしで、エクセルの標準搭載機能のみ で実現できます。

本記事では、

  • 1つのテーブルにデータを詰め込んだときに何が問題なのか
  • どのような解決策があるか
  • どうやってエクセルで実装するのか

について説明します。 また、 他のファイルからもデータを使用したい場合や、 データ数が膨大になる場合の対策についても触れます。

エクセルのバージョン

本記事は、エクセル2024を基に作成しています。
環境によっては、UIなどの細かな点が異なる可能性があります。

課題:1テーブルに詰め込むと管理しにくい

管理しにくい例

情報量の多いデータを、1つのテーブルに詰め込んだ例は次の通りです。 フィールド(列)の数が多くなります。

フィールド数の多いテーブルの例

問題点

1つのテーブルで情報量の多いデータを扱うと、次のような問題が生じます

  • ファイル容量が増える
    • 重複する情報もすべて記録するためファイルの容量が増加しやすく、動作が遅くなりやすい。
  • 閲覧性が低下する
    • フィールド(列)数が多くなった横長のテーブルでは、目的の項目を探しづらくなる。横スクロールする手間が生じる。
  • 過去のデータからの転記作業が増える
    • コピペ作業が増える: 手間が増える。最新でない情報を記入してしまう可能性が高くなる。
    • 入力ミス / 表記ゆれが発生する: 手打ちの場合、整合が取れなくなる(検索性が落ちる)可能性がある。

最新情報を間違える可能性が高くなる

解決策

情報量の多いデータは、1つのテーブルにすべてを詰め込まず、 情報のまとまりごとに分割する方が管理しやすくなります その後で、分割したテーブルを結合し、 使い勝手の良い形で出力します。

テーブルの分割と結合について、詳細を以降で述べます。

手順1. 情報のまとまりごとにテーブルを分割する

テーブルのフィールド(列)の中で、 データ形式や更新頻度などが類似しているものでグループ化し、 テーブルを分割します 分割することで、更新頻度の高い部分と低い部分が分かれ、 データの整合性が維持されやすく、 管理しやすくなります。

分割後のテーブルは、基本的に以下のいずれかのタイプになります

1つのテーブルを分割するイメージ図

タイプM. 基礎情報テーブル

基礎情報をまとめたテーブルで、 辞書のように、他のテーブルから参照されるテーブルです。 マスターテーブルとも呼ばれます。 管理者によって情報は最新状態に維持され、 参照先で整合性がとれるようになります。

情報を書き換えたときの変更履歴を記録しておきたい場合は、 履歴テーブルを組み込みます。 本記事では簡単のため、履歴テーブルがない場合で話を進めます。

タイプT. 記録情報テーブル

日々発生するイベントを記録するテーブルで、 日記のように、時間とともにデータが増加していくテーブルです。 トランザクションテーブルとも呼ばれます。 基礎情報テーブルの主キー(IDなどの重複しない文字列・値)を使って、 基礎情報を参照します。

手順2. 連結して使い勝手の良いテーブルを作成する

分割したテーブルは、 それぞれのフィールド(列)を紐づけることで、 1つの結合テーブルを作成できます 結合後のテーブルでは、表示させるフィールド(列)の切り替えも簡単なので、 必要な情報のみで見やすいテーブルが作成できます。

エクセルでの実装方法

エクセルでVBAを使わず、上記を実装することができます。 各テーブルとピボットテーブルは、 同一のシート上にまとめることも、 それぞれ異なるシートに分けることもできます。

使用するエクセル機能

  • テーブル :基礎情報テーブルと記録情報テーブルで個別にデータを格納
  • リレーションシップ :複数のテーブルデータを結合
  • ピボットテーブル :結合したデータを出力

実装手順

1. テーブルを複数作成する

基礎情報テーブルと記録情報テーブルの2種類のテーブルを作成します。 テーブルの作成方法は、セルを選択し 挿入 > テーブル(ショートカットキー:Ctrl + t)です。

それぞれのテーブル名は、わかりやすいものに変更しておくのがオススメです※1。 テーブルを選択し テーブルデザイン > テーブル名:の欄を書き換えれば変更できます。

※1 テーブル名の先頭には、わかりやすく M_(マスターテーブル)や T_(トランザクションテーブル)のようにテーブルタイプをつけることも多い。


基礎情報テーブル では、
参照に使う文字列・値を格納する列(= 主キー )が必須です。 列内の文字列・値は重複がない(一意である)必要があります それ以外にも、基礎情報として必要なデータのフィールド(列)を追加します。

記録情報テーブル では、
基本的に「記入日(時)」の列が入ります。 基礎情報テーブルから値を参照する列では、基礎情報テーブルの主キーに使われている値を入力します。 こちらのテーブルでも、IDなどの主キーを列に含めるのが望ましいです。 主キーに連番を入れる場合は、数式でなく数値を入力しましょう※2。

※2 連番入力で、=A2+1=ROW()-ROW(A$2)のような位置関係に依存する数式を使用すると、 テーブル行を並び替えたり、フィルタリングしたときに番号がずれてしまい、 IDを使った参照がうまく機能しなくなる。 数値の直接入力が安全(複数セル選択+オートフィルが便利)。

2. 異なるテーブル間でフィールドの紐づけをする

記録情報テーブルから、基礎情報テーブルの情報を参照するために、 フィールド(列)の紐づけをします。 データ > リレーションシップ (データツールのエリア) を選択 > 新規作成 ボタン
のウィンドウ画面「リレーションシップの作成」から設定できます ※3。 (テーブル次第では、新規作成 ボタンでなく 自動検出 ボタンで設定できることもあります)

設定画面では以下のように選択し、OKを押します。

  • テーブル: 記録情報テーブル
  • 列(外部): 記録情報テーブルの中で、基礎情報テーブルの主キーを参照している列
  • 関連テーブル: 基礎情報テーブル
  • 関連列: 基礎情報テーブルの主キー

リレーションシップの管理画面で、設定ができていることを確認し、閉じる ボタンを押します。


3. ピボットテーブルで出力する

2でリレーションシップの設定が完了すると、 データモデル 」(複数テーブルを結合したデータ)が内部で作成されます。 「データモデル」を見やすく出力するときに、ピボットテーブルを使用します

ピポットテーブルの作成手順は、
挿入 > ピボットテーブル > データモデルから を押し、 ピボットテーブルを挿入したい場所を選んで OK ボタンを押します。

作成後は、見やすいテーブルになるように設定します 表示形式は、表形式で表示がわかりやすく見やすいです デザイン > レポートのレイアウトより設定可能)。

ピボットテーブルのフィールドでは、 上部の欄にあるテーブルのフィールドを、 下部のフィルター / / / ドラッグ&ドロップして設定します。 以下をベースに、 目的に応じてカスタマイズしていくのがオススメです。

テーブルを単純に結合するとき
  • 行: (下記の順に追加)
    1. 記録情報テーブルの記入日
    2. 記録情報テーブルの重要項目
    3. 登録情報テーブルの重要項目
  • 値: 登録情報テーブルで「数値」を記入している列(「金額」や「個数」など)
    • 集計に使用する計算の種類: 合計
日々の増減を集計するとき
  • 行: 記録情報テーブルの記入日
  • 列: 登録情報テーブルの代表的項目(「名称」「製品名」など)
  • 値: 登録情報テーブルで「数値」を記入している列(「金額」や「個数」など)
    • 集計に使用する計算の種類: 合計

エクセルで実装後の使い方

上記で作成したエクセルファイルは、以下のようにしてデータの追加、編集、閲覧ができます。

データの追加、編集

ピボットテーブルは閲覧用で、 直接データを書き換えられません データの追加、編集を行うときは、元のテーブルで行います

  1. 元テーブルのデータ追加・データ編集
  2. データ > すべて更新ボタンを押す
  3. ピボットテーブルが更新される

元のデータの編集は、主キーで検索すると楽

ピボットテーブルを見ているときに、データを修正したくなることがあると思います。
元のデータテーブルを見て、すぐに修正箇所が見つかればよいですが、
データ数が多いと見つけづらいこともあります。
そのときは、主キー(または重複のない列)で検索するのがオススメです。

具体的な手順は

  1. ピボットテーブルの集計値をダブルクリック → ドリルダウンで詳細を表示
  2. 編集したい行の主キーの値をコピー
  3. 元のデータテーブルの主キー列で、2の値を検索(Ctrl + f

データの閲覧・集計

ピボットテーブルの機能を使うと、 データ数が多い場合でも 見やすくなります。 よく使う機能を紹介します。

フィルタリング、並び替え

ピボットテーブルのヘッダーセルにある ボタンを押すと、 その列のフィルタリング、並び替えができるウィンドウが表示されます。

表示項目の追加・削除・並び替え・集計値の変更

ピボットテーブルのフィールド欄の項目を操作することで、 ピボットテーブル中で表示させる列(行)の項目の追加・削除・並び替えができます。 ピボットテーブルのフィールド欄は、ピボットテーブル上のセルを選択状態にすると出現します。

  • 追加: 上部にあるテーブルのフィールド名を、下部にある//にドラッグ&ドロップ。
  • 削除: 下部にある//から、ピボットテーブルのフィールド外へ項目をドラッグ&ドロップ。
  • 並び替え: 下部にある//の中の項目をドラッグで並び替える。
  • 集計値の変更: 下部にあるの項目をクリック > 値フィールドの設定 > 集計方法タブで目的の計算方法を選択 > OK。

集計に使用されたデータの詳細表示

ピボットテーブルのフィールドに入れた項目は、 集計値として表示されます。 集計値は複数のデータの値を使って計算されます。 この集計値の算出に使用された元データは、 集計値のセルをダブルクリック(ドリルダウン)することで、 簡単に閲覧できます 新規シートが作成されますが、閲覧後は削除して大丈夫です。

まとめ

フィールド(列)数、情報量が多いデータを1つのテーブルに詰め込むと データの管理がしづらくなり、 作業効率の低下につながります

この問題は、 データは テーブルを分割して管理 し、 閲覧する場所で データを結合するようにする ことで解決できます。 エクセルで実装するには、 標準搭載の機能 テーブル, リレーションシップ, ピボットテーブルを使用します

次のステップ:複数ファイル構成との比較

本記事では、元データや閲覧用テーブル(ピボットテーブル)が すべて1ファイルにまとめられたファイル(「1ファイル完結タイプ」)を取り扱っています。

このタイプのメリットは、

  • 影響範囲がわかりやすい(1ファイル内に限定)

一方で、次のようなデメリットがあります。

  • データ数が増えると遅くなる操作性が悪くなる管理しづらくなる

データ数が膨大(数十万行以上)になる場合や、シート数が増えすぎて見づらい場合は、 ファイルの分割を検討するべきです。 パワークエリ を使うことで、分割したファイルにも対応できます。

テーブルの作成

リレーションシップの設定画面

※3 パワーピボット(要アドインON)を使うと、グラフィカルに設定できる。 パワーピボットを使用したリレーションシップの設定画面

テーブルを単純に結合するときのピボットテーブル

日々の増減を集計するときのピボットテーブル

リレーションシップの設定画面