MySQL上のデータにExcelからODBC接続して、
ピボットテーブルでクロス集計する手順を紹介したいと思います。

Excelのピボットテーブル機能は便利ですが、
複数人でいろいろな角度から集計していたりする場合に、
元データを保存したマスタExcelファイルの管理に手間やミスが発生したり、
古いバージョンのExcelだと行数の上限(65536行)以上の集計ができなかったり、
というような問題が発生するのではないかと、思います。

ここで紹介する手順では、
・サーバ上のMySQLに、マスターデータを保存する
・PC上のExcelから、MySQLに接続してデータを取り込みピボットテーブル作成
という構成を想定します。
サーバ上のMySQLの環境と対象テーブル・データは存在している前提で、
クライアントPC側の設定の手順を示します。

手順は以下の流れで行います。

  1. MySQLのODBCドライバをインストール
  2. ODBCの接続を作成する
  3. Excelでピボットテーブルを作る

MySQLのODBCドライバをインストール

MySQLのサイトからODBCドライバをダウンロードする

MySQL Download Connector/ODBC
 URL: http://dev.mysql.com/downloads/connector/odbc/
 ファイル: mysql-connector-odbc-5.2.5-win32.msi

ここでは32bit版を利用していますが、
構築する環境に適したバージョンを選んでください。

ダウンロードしたファイルを開きダブルクリックして、
インストーラの指示に従ってインストールを実行します。
# たいていの場合は、デフォルトの設定で問題ないはず。

ODBCの接続を作成する

「スタート」→「管理ツール」→「データソース(ODBC)」
と選択して、「ODBC データソース アドミニストレータ」を開きます。

「追加」を押下し、「データソースの新規作成」を開きます。
「MySQL ODBC 5.2 Unicode Driver」を選んで「完了」を押下します。

「MySQL Connector/ODBC Data Source Configuration」で、
接続したいMySQLデータベースの、以下の各設定項目を入力し「OK」を押下すると、
MySQLへのODBC接続が作成できます。

※各設定項目は次のとおり。
 Data Source Name: データソースを識別するための名称、任意の名称でよい
 TCP/IP Server: MySQLサーバのIPアドレス
 Port: MySQLサーバの接続ポート番号(変更していなければ既定値)
 User: MySQLDBのユーザ名
 Passowrd: MySQLDBのパスワード
 Database: MySQLDBのデータベース名

Excelでピボットテーブルを作る

Microsoft Excelを起動します。
# 非常に古いですがExcel2002SP3使っています。
# まぁ、古くても大丈夫ということで^^;

「データ」→「外部データの取り込み」→「データの取り込み」と選択し、
「データファイルの選択」で「新しいデータソースへの接続.odc」をダブルクリックします。

「データ接続ウィザード」で「その他/詳細」を選択する。

「データリンク プロパティ」の「接続」タブを開き、
「データソース名を使用する」選択し、
作成したODBC接続の「Data Source Name」を指定して、「OK」をクリックします。

「データ接続ウィザード」でピボットテーブルに利用したいテーブルを選び、
「次へ」をクリックします。

次の画面で「完了」をクリックします。
# 必要に応じて、ファイル名や説明を指定してください。

「データのインポート」画面で「ピボットテーブル レポートの作成」をクリックします。

「ピボットテーブル/ピボットグラフ ウィザード」で「完了」をクリックします。

後は、通常のピボットテーブル同様の操作データを参照できます。

# この画面イメージは、
# 売上番号, 販売日, 商品点数, 売上合計, 利益合計
# というカラムがあるテーブル元にピボットテーブルを表示している例です。

データベースのデータが更新された時は、
「データ」→「データの更新」を選んで、最新データを取得します。
この方法を使うと、
Excel2002の上限(65536行)を超えるレコードのテーブルでも、
ピボットテーブルが利用可能になります。
が、データが大きくなるとメモリ不足になったりするので、
MySQL側でカラムやレコードを絞り込んだ、Viewを作った方が現実的かと思います。

# 試したものは60カラムx50万レコード程のデータ量で試したところ、
# 最初のデータ取得及びデータ更新に時間がかかるものの、
# ピボット操作は、現実的なスピードで利用できていました。
# Core2Duo, メモリ2GB, WindowsXP, Excel2002という環境でも、

ピボットテーブルでいろいろな切り口の集計を行っていて、
その切り口ごとにExcelファイルが存在していたとしても、
「データの更新」を選べば、元データを最新に揃えられるのは、
「数字が合わない…」というような無駄な混乱が減って、便利ではないかと思います。