Excelで,表データを「要約」した円グラフを作成する方法 …SUMIF関数のワイルドカードにINDIRECT(ADDRESS(ROW()))して,情報をまとめる
下記は,2013年になってから今(9月)までの,本ブログ訪問者の利用ブラウザ。

集計データをブラウザの種類ごとに要約して,円グラフにしてある。
この元データは,下記のように,ブラウザのバージョン情報まで含まれている。
これだと,情報が細かすぎるので,円グラフにしづらい。つまり,概要が分かりづらい。
InternetExplorer 8.0 | 97,790 |
InternetExplorer 9.0 | 62,050 |
InternetExplorer 10.0 | 56,582 |
Chrome 28.0.1500.95 | 46,082 |
Chrome 27.0.1453.116 | 45,410 |
Firefox 22.0 | 38,885 |
Firefox 21.0 | 37,274 |
Chrome 28.0.1500.72 | 35,056 |
Chrome 27.0.1453.110 | 33,068 |
Safari 8536.25 | 32,869 |
InternetExplorer 7.0 | 27,625 |
Firefox 23.0 | 27,520 |
Chrome 27.0.1453.94 | 22,021 |
Chrome 26.0.1410.64 | 20,889 |
Safari 534.30 | 18,416 |
Chrome 29.0.1547.66 | 16,698 |
Chrome 29.0.1547.57 | 14,369 |
InternetExplorer 6.0 | 12,475 |
Chrome 28.0.1500.71 | 10,791 |
Chrome 29.0.1547.62 | 10,396 |
Opera 9.80 | 9,667 |
Firefox 20.0 | 8,167 |
Safari 533.1 | 8,111 |
Safari 536.30.1 | 7,873 |
Firefox 17.0 | 5,857 |
Safari 7534.48.3 | 4,620 |
Chrome 27.0.1453.93 | 4,323 |
不明 | 3,918 |
AppleWebKit 536.26 | 2,734 |
Safari 536.29.13 | 2,539 |
Chrome 29.0.1547.65 | 2,295 |
Chrome 26.0.1410.65 | 2,188 |
Firefox 19.0 | 1,599 |
Sleipnir 2.9.16 | 1,596 |
Safari 534.59.8 | 1,566 |
(以下省略)
細かすぎる表データから,情報を「要約」した形で円グラフを作り,
Webページへのアクセス状況をわかりやすく・おおまかに視覚化したい。
できるだけ手早く終わらせるには,どのようなExcel関数を使ったらよいか?(VBAマクロは使わない)
作成方法
下記のようなExcel関数を使う。
- SUMIF関数
- INDIRECT関数
- ADDRESS関数
- ROW関数
- COLUMN関数
「はてなカウンター」のアクセス解析画面から,ユーザーエージェントについて
上記のような細かい統計情報を取得し,Excelシートの左上にペースト。
そして,その隣に,下記のような「ざっくりしたブラウザ種別」を貼り付ける。
- Chrome
- InternetExplorer
- Firefox
- Safari
- Opera
- Sleipnir
- AppleWebKit
その隣の列に,下記のようなExcel数式を1セル分だけ貼り付けて,ドラッグしてオートフィルする。
=SUMIF(A$1:A$50,"*"&INDIRECT(ADDRESS(ROW(),COLUMN()-1))&"*",B$1:B$50)
これで,ざっくりしたブラウザ種別ごとに,集計結果の数値が算出される。
あとは,その部分をもとに円グラフをワンタッチで生成するだけだ。
キモとなるExcelの数式を簡単に説明すると:
- ADDRESS(ROW(),COLUMN()-1) は,「現在のセル(そのセル自体,自分自身)の左側のセル」の参照用の番地を文字列で返す。G1セル上ではこの数式は "F1" として評価される。
- INDIRECT( 文字列 ) によって,セルの番地文字列が,セルとして変換される。文字列をセルに変換している。
- SUMIF(検索範囲,検索条件,集計範囲) によって,特定の検索条件にマッチする行のみを集計し,合計値を算出している。検索条件には文字列のワイルドカードを使う事ができ,正規表現のように,文字列のあいまい検索が可能。たとえば,"*Firefox*" という検索条件であれば,"Firefox" を含む任意の文字列がマッチする。
数式そのものに,検索対象となるキーワード(ブラウザ名)を埋め込まないで,外にくくり出してセル参照しているところがポイント。
そうすれば,シートのメンテナンス性が高まる。新規ブラウザを追加しやすい。
こういうふうにドキュメントのメンテナンス性を向上させたい時に, INDIRECT / ADDRESS が大活躍する。
参考
SUMIFで文字列のあいまい検索をする:
指定した文字列が含まれるかどうかを判断する:Excel 一般|即効テクニック|Excel VBAを学ぶならmoug
http://www.moug.net/tech/exopr/009005...
エクセル関数の質問!2 条件で文字列を含まないものだけを合計したいのですがどう...
http://detail.chiebukuro.yahoo.co.jp/...
Excel(エクセル)基本講座:条件付き合計の関数(SUMIF,SUMIFS)
http://www.eurus.dti.ne.jp/~yoneyama/...
「隣りのセル」を参照する:
エクセルで現在のセル位置を返す関数というのはありますか?
http://detail.chiebukuro.yahoo.co.jp/...
Office TANAKA - ワークシート関数の解説[INDIRECT関数]
http://officetanaka.net/excel/functio...
ADDRESS関数の使い方 初心者のエクセル(Excel)学習・入門
http://excel.onushi.com/function/addr...
UAの「AppleWebKit」はAndroid:
AndroidのブラウザはSafari?スマホのUser-Agentを見てみよう! | CreaMo!-クリーモ!-クリエイティブをMotto!集めるブログ
http://creamo.jp/webtech/android-user...
関連する記事:
Excelブックの「シート目次」を,自動的に作成するバッチ (WSH/JScriptで,各シートへのリンク付きの目次を自動生成)
http://language-and-engineering.hatenablog.jp/entry/20110921/p1
「実行可能ドキュメント」が満たすべき性質 − テスト自動化ツール「Excelenium」で使われている技術や手法
http://language-and-engineering.hatenablog.jp/entry/20101112/p1
Google 検索の「サジェスト機能」を, Excel のシート上にVBAで作る (セルの内容に応じて入力規則を動的に変える方法)
http://language-and-engineering.hatenablog.jp/entry/20081125/1227571724