今回も Excel 2007 以降の重要な機能追加である「テーブル機能」を使った話である。
ピボットテーブルの参照先としてテーブルを使う
すでにテーブルを参照先範囲に指定することでデータの増減に自動的に対応する恩恵を受けることは入力規則や関数で紹介してきた。
同様にピボットテーブルの参照先範囲としてテーブルを指定すると、動的にデータの増減(参照先範囲の変化)に対応する。ただしピボットテーブルの「更新」はこれまで同様押す必要はある。
元データの行の追加だけでなく、列の追加にもピボットテーブルは対応する。
ピボットテーブルを使うユーザーはすでに参照先データがきれいな「表」になっているはずである。その表をテーブルに変換して、ピボットテーブルの参照先としてテーブルを指定するだけでこの恩恵を受けられるのである。これを使わない手はない。
ただ、残念なことに、この「ピボットテーブル」の結果の表は「テーブル」機能で実装されていない。テーブル機能が出る前からピボットテーブルは存在し、その実装は同じ「テーブル」という用語を使っていても違うのである。ピボットテーブルの参照が構造化参照のようになれば、、、と思いがちだが注意してほしい。
そのかわりと言ってはなんだが、Excel 2013 以降でこのピボットテーブルとテーブルの組み合わせでさらに強力に業務を支援する機能が追加された。それが「リレーションシップ」である。
VLOOKUPはもう使わない?Excel 2013 から実装されたリレーションシップ
上記で使ったテーブルには商品コードが記入されていて、商品名はない。このようなデータの持ち方の場合は、商品テーブルが別に存在して、そこから商品名を VLOOKUP でこれまでは検索してきた。
(注釈するが、この図のようなデータの持ち方、ピボットテーブルの配置はお勧めではないどころかやってはいけない。テーブルを使う場合は混乱を避けるために1ワークシート1テーブルとすべきである。すべてのデータを見せるためにこのような配置をしている。)
2つ程度であれば、列を追加して VLOOKUP を使ってデータを参照してもいいが、基幹業務システムからデータをインポートしたり、何等かの形でそのデータを利用しようとすると複数のテーブルに分けられた「正規化」されたテーブルであることが多い。
これに対応するために Excel 2013 では「リレーションシップ」という機能が追加された。
それぞれの参照データ範囲は「テーブル」に変換されている必要がある。
テーブルに変換されていると [データ] タブの [データ ツール] セクションにある [リレーションシップ] の [リレーションシップの管理] ダイアログで参照・テーブル間の関連付けが可能になる。
以下の3つのテーブルの関連付けを行ってみる。
個人売上テーブル
商品テーブル
地域テーブル
欲しいデータは個人売上テーブルの商品コードである A や B が商品名になったものや、その商品の地域名である。そのため、まず、個人売上テーブルと商品コードを関連づける。ブック内のテーブルは「リレーションシップの管理」ダイアログのプルダウン リストに表示されるのでシートを移動して範囲指定するようなことはない。個人売上テーブルで A, B, C... がある [商品] 列と、商品テーブルで A, B, C... がある [商品コード] を関連付けてやる。
続けて、商品テーブルと地域テーブルを関連付ける。今度は 001, 002, 003... がある列をそれぞれ関連付ける。
今は以下のような関連付けになっている。
ここまで設定したらピボットテーブルでこの関連付けが利用可能になる。
これで作成したピボットテーブルのフィールド リストにはこれまでなかったタブが表示される。その中の [すべてのフィールド] をクリックすると、個人売上テーブルに関連付けられたテーブルが表示され、それを展開すると列名が表示される。
この各テーブルの列名を使ってピボットテーブルを作成することが可能だ。
このフィールド リストを使って、商品名別と地域名別の売上のピボットテーブルを作成してみる。
複数テーブルを使ったシンプルなピボットテーブルであれば、このリレーションの機能をどんどん活用すべきだが、その反面、実はこれまで Excel のピボットテーブルでできていたこと(それも重要なこと)がいくつかできなくなっていることに注意しなければならない。(もちろん、その対応方法は存在する)それを以下に紹介する。
データモデルとは
ところで、ピボットデーブルを作成するときに [複数のテーブルを分析するかどうかを選択] で [このデータをデータモデルに追加する] にチェックを入れた。一体データモデルとはなんだろうか。
このブログで Excel 2007 以降のテーブル機能を紹介する発端となっているのは Office 365 との親和性であった。 http://road2cloudoffice.blogspot.jp/2014/10/excel-office-365.html
Office 365 の SharePoint Online や Access アプリ、クラウドや社内にあるサーバーのデータと、Excel との橋渡しをするのがテーブルである、と紹介したが、さらに正確にいうとテーブルとデータモデルによって連携できる、と言える。
そもそも、このデータモデルという実装方法は Excel から発生したものではなく、マイクロソフト社のデータベースサーバーである SQL Server で Excel との連携のために開発された Excel アドインから来ている。
2007 Office リリース用 SQL Server 2005 データ マイニング アドイン
http://office.microsoft.com/ja-jp/excel-help/HA010225754.aspx
そのため、データモデルとなった「データの集まり」は Excel の機能を使うことができない場合もある。
このリレーションシップ機能を使ったピボットテーブルとして実際に見ているデータはデータモデルから取り出しているものである。それは [データ] タブの [接続] の [ブックの接続] ダイアログから確認できる。ThisWorkbookDataModel はピボットテーブルの範囲を示している。
そして、このデータモデルのリレーションシップを使ったピボットテーブルでの代表的な制限は以下である。
[追記] Excel 2016 からはこの制限はなくなっている。詳しくはこちらを参照のこと。
・ グループ化ができない
・ 集計フィールド、集計アイテムを追加できない
グループ化はシリアル値である日付を月や年にまとめるためにピボットテーブルではよく使うだろう。集計フィールドもデータに単価と数量があり、そこから金額を計算するときに使うことが多い。
これらが使えないとピボットテーブルによる分析はできないも同然である。しかし、そもそも「SQL Serer 2005 データ マイニング アドイン」から発展してきた実装方法である。このアドインはデータの分析のための機能である。
Excel が本来持っていた機能はデータモデルによりデータの持ち方が変わってしまったため利用できないが、その代替は当然用意されている。
それがデータモデルに追加する「セット」であり、そこで利用する MDX 言語だ。
(MDX : the MultiDimensional eXpression)
上図「ブックの接続ダイアログ」で ThisWorkbookDataModel を選択した状態で [セットの管理] ボタンを押せば、新しいセットの追加や MDX 編集画面がでる。
ただ、公開されている日本語の情報が非常に少ないのと、Excel 側からの観点よりも、SQL Server のアドイン(Analysis Services)側からの情報に偏ることが多い、さらに SQL 構文などのデータベースの知識を必要とするため、Excel ユーザーにとっては習得は厳しいかもしれない、というのが現状だろう。
このような状況を打破し、Excel ユーザーにも直感的にわかりやすく、Excel の操作性に近い設定を提供するのが PowerPivotである。 PowerPivot の対象はクラウドやサーバーのデータだけでなく、Excel ブック内のデータモデル化したテーブルも対象にできる。つまり「テーブル」であれば、PowerPivot からの利用が可能なのだ。
PowerPivot で日付グループ化、集計列追加でピボットテーブルを作った例
ただし、PowerPivot を使うには「エディション」に注意しなければならない。
Personal エディションや Home & Business エディションでは PowerPivot を利用することができない。利用するには Office 2010 以上の Professional やSolo、Office 365 Pro Plus が必要となる。
[追記] Power Pivot で日付のグループ化
http://road2cloudoffice.blogspot.jp/2014/11/powerpivot.html
ピボットテーブルの参照先としてテーブルを使う
すでにテーブルを参照先範囲に指定することでデータの増減に自動的に対応する恩恵を受けることは入力規則や関数で紹介してきた。
同様にピボットテーブルの参照先範囲としてテーブルを指定すると、動的にデータの増減(参照先範囲の変化)に対応する。ただしピボットテーブルの「更新」はこれまで同様押す必要はある。
元データの行の追加だけでなく、列の追加にもピボットテーブルは対応する。
ピボットテーブルを使うユーザーはすでに参照先データがきれいな「表」になっているはずである。その表をテーブルに変換して、ピボットテーブルの参照先としてテーブルを指定するだけでこの恩恵を受けられるのである。これを使わない手はない。
ただ、残念なことに、この「ピボットテーブル」の結果の表は「テーブル」機能で実装されていない。テーブル機能が出る前からピボットテーブルは存在し、その実装は同じ「テーブル」という用語を使っていても違うのである。ピボットテーブルの参照が構造化参照のようになれば、、、と思いがちだが注意してほしい。
そのかわりと言ってはなんだが、Excel 2013 以降でこのピボットテーブルとテーブルの組み合わせでさらに強力に業務を支援する機能が追加された。それが「リレーションシップ」である。
VLOOKUPはもう使わない?Excel 2013 から実装されたリレーションシップ
上記で使ったテーブルには商品コードが記入されていて、商品名はない。このようなデータの持ち方の場合は、商品テーブルが別に存在して、そこから商品名を VLOOKUP でこれまでは検索してきた。
(注釈するが、この図のようなデータの持ち方、ピボットテーブルの配置はお勧めではないどころかやってはいけない。テーブルを使う場合は混乱を避けるために1ワークシート1テーブルとすべきである。すべてのデータを見せるためにこのような配置をしている。)
2つ程度であれば、列を追加して VLOOKUP を使ってデータを参照してもいいが、基幹業務システムからデータをインポートしたり、何等かの形でそのデータを利用しようとすると複数のテーブルに分けられた「正規化」されたテーブルであることが多い。
これに対応するために Excel 2013 では「リレーションシップ」という機能が追加された。
それぞれの参照データ範囲は「テーブル」に変換されている必要がある。
テーブルに変換されていると [データ] タブの [データ ツール] セクションにある [リレーションシップ] の [リレーションシップの管理] ダイアログで参照・テーブル間の関連付けが可能になる。
以下の3つのテーブルの関連付けを行ってみる。
個人売上テーブル
商品テーブル
地域テーブル
欲しいデータは個人売上テーブルの商品コードである A や B が商品名になったものや、その商品の地域名である。そのため、まず、個人売上テーブルと商品コードを関連づける。ブック内のテーブルは「リレーションシップの管理」ダイアログのプルダウン リストに表示されるのでシートを移動して範囲指定するようなことはない。個人売上テーブルで A, B, C... がある [商品] 列と、商品テーブルで A, B, C... がある [商品コード] を関連付けてやる。
続けて、商品テーブルと地域テーブルを関連付ける。今度は 001, 002, 003... がある列をそれぞれ関連付ける。
今は以下のような関連付けになっている。
ここまで設定したらピボットテーブルでこの関連付けが利用可能になる。
個人売上テーブルを参照先として指定したピボットテーブルを作ってみる。この時重要なのは、このリレーションシップを利用したい場合は必ず [複数のテーブルを分析するかどうかを選択] の [データモデルに追加する] をチェックすることだ。
この各テーブルの列名を使ってピボットテーブルを作成することが可能だ。
このフィールド リストを使って、商品名別と地域名別の売上のピボットテーブルを作成してみる。
複数テーブルを使ったシンプルなピボットテーブルであれば、このリレーションの機能をどんどん活用すべきだが、その反面、実はこれまで Excel のピボットテーブルでできていたこと(それも重要なこと)がいくつかできなくなっていることに注意しなければならない。(もちろん、その対応方法は存在する)それを以下に紹介する。
データモデルとは
ところで、ピボットデーブルを作成するときに [複数のテーブルを分析するかどうかを選択] で [このデータをデータモデルに追加する] にチェックを入れた。一体データモデルとはなんだろうか。
このブログで Excel 2007 以降のテーブル機能を紹介する発端となっているのは Office 365 との親和性であった。 http://road2cloudoffice.blogspot.jp/2014/10/excel-office-365.html
Office 365 の SharePoint Online や Access アプリ、クラウドや社内にあるサーバーのデータと、Excel との橋渡しをするのがテーブルである、と紹介したが、さらに正確にいうとテーブルとデータモデルによって連携できる、と言える。
そもそも、このデータモデルという実装方法は Excel から発生したものではなく、マイクロソフト社のデータベースサーバーである SQL Server で Excel との連携のために開発された Excel アドインから来ている。
2007 Office リリース用 SQL Server 2005 データ マイニング アドイン
http://office.microsoft.com/ja-jp/excel-help/HA010225754.aspx
そのため、データモデルとなった「データの集まり」は Excel の機能を使うことができない場合もある。
このリレーションシップ機能を使ったピボットテーブルとして実際に見ているデータはデータモデルから取り出しているものである。それは [データ] タブの [接続] の [ブックの接続] ダイアログから確認できる。ThisWorkbookDataModel はピボットテーブルの範囲を示している。
そして、このデータモデルのリレーションシップを使ったピボットテーブルでの代表的な制限は以下である。
[追記] Excel 2016 からはこの制限はなくなっている。詳しくはこちらを参照のこと。
・ グループ化ができない
・ 集計フィールド、集計アイテムを追加できない
グループ化はシリアル値である日付を月や年にまとめるためにピボットテーブルではよく使うだろう。集計フィールドもデータに単価と数量があり、そこから金額を計算するときに使うことが多い。
これらが使えないとピボットテーブルによる分析はできないも同然である。しかし、そもそも「SQL Serer 2005 データ マイニング アドイン」から発展してきた実装方法である。このアドインはデータの分析のための機能である。
Excel が本来持っていた機能はデータモデルによりデータの持ち方が変わってしまったため利用できないが、その代替は当然用意されている。
それがデータモデルに追加する「セット」であり、そこで利用する MDX 言語だ。
(MDX : the MultiDimensional eXpression)
上図「ブックの接続ダイアログ」で ThisWorkbookDataModel を選択した状態で [セットの管理] ボタンを押せば、新しいセットの追加や MDX 編集画面がでる。
ただ、公開されている日本語の情報が非常に少ないのと、Excel 側からの観点よりも、SQL Server のアドイン(Analysis Services)側からの情報に偏ることが多い、さらに SQL 構文などのデータベースの知識を必要とするため、Excel ユーザーにとっては習得は厳しいかもしれない、というのが現状だろう。
このような状況を打破し、Excel ユーザーにも直感的にわかりやすく、Excel の操作性に近い設定を提供するのが PowerPivotである。 PowerPivot の対象はクラウドやサーバーのデータだけでなく、Excel ブック内のデータモデル化したテーブルも対象にできる。つまり「テーブル」であれば、PowerPivot からの利用が可能なのだ。
PowerPivot で日付グループ化、集計列追加でピボットテーブルを作った例
ただし、PowerPivot を使うには「エディション」に注意しなければならない。
Personal エディションや Home & Business エディションでは PowerPivot を利用することができない。利用するには Office 2010 以上の Professional や
[追記] Power Pivot で日付のグループ化
http://road2cloudoffice.blogspot.jp/2014/11/powerpivot.html