ラベル Excel アンケート の投稿を表示しています。 すべての投稿を表示
ラベル Excel アンケート の投稿を表示しています。 すべての投稿を表示

2018/06/13

[Excel 取得と変換] カンマで区切られた複数回答結果を集計する

ネット上でアンケートを作成して、スマホやパソコンで答えてもらい、その結果をCSVなどで受け取るサービスってよくありますよね。身近な(でも、意外に使われていない)サービスとしては、Excel Onlineのアンケート機能(最近は Excel Survey という名称のようですが)、なんてものがあります。([追記 2022.3] Excel Survey はサービス終了し、Forms へ統合されました)

ラジオボタンやドロップダウンリストで複数の選択肢から1個だけ選択させる、という設問は、結果が1つだけなので、1セルに1つの値が入りますが、複数回答可能な設問になると、1つのセルに複数の値が入ります。アンケートの結果として手に入れた表が以下のようになります。
セル内でカンマで区切られた複数回答の例
これも「集計・分析しづらい表」の代表例とも言えます。今回はこの複数回答結果のような、1セルにカンマなどの区切り文字で複数値が含まれているデータを簡単に Power Query (Excel であれば取得と変換)で集計する方法をご紹介します。ワークシート関数を駆使しなくても、VBAを使わなくても、Excelの新しい機能である「取得と変換」(Power Query)を知っていれば対応可能です。
上記の例の場合、ビール、ウィスキー、ワインが選ばれた数を知りたい、そこから、東京でビールを選んだ人はどのくらいいるのか、性別で見た時に、、、という分析をしたいわけですよね。こういう分析は、やはりピボットテーブルが使いやすいと思います。

セルの中の区切り文字でセルを分割する

Power Query - 取得と変換を使わなくても、[データ]タブの[データ ツール]グループにある「区切り位置」の機能を使えば、カンマ区切りの1セルのデータを複数セルに分割することができるのは確かです。

話は脱線しますが、これまでも同じ事ができてるんだから、あえて「取得と変換」 Power Query を使う必要はない、と考えてしまいがちですが、Power BI と Excel の製品動向から考えると、早めに同じ機能なのであれば「取得と変換」の使い方に慣れたほうが得策だと感じています。メリットやデメリットなどいろいろ〇×表で書けると思いますが、一番の違いは、元のデータが Excel のワークシート上に無くてもよい、という点、よって元のデータを直接加工しないで済む、という点だと思います。

実際の手順を追ってみましょう。

1) 元のデータをテーブルにする
モダンエクセルの基本は表形式のデータはテーブルにする、です。Ctrl+Tでテーブル形式に変換してしまいます。

2) テーブルからクエリ エディターを開く
変換したテーブルを元データとして、この元データを加工するためにクエリ エディターを開きます。アクティブセルをテーブル内において、[データ]タブの[取得と変換]グループにある[テーブルから]をクリックして、クエリ エディターを立ち上げます。

3) 列を指定して区切り文字による列分割を行う
サンプルデータであれば「好きな飲み物(複数回答可能)」の列を選択(ヘッダーをクリックでOK)し、区切り文字に「カンマ」を選択して列の分割を行います。手順は以下のアニメーションGIFを参考にしてください。
クエリ エディターの [変換] - [列の分割]機能を使って、カンマ区切り文字で列を分割する
集計・分析しやすいデータの持ち方に変換する

上記の列の分割までは「区切り位置」機能と大差ありませんが、取得と変換を使ってほしいのは、この後の「列ピボットの解除」の処理があるからです。
[追記] 列の分割機能の詳細設定オプションで「分割数」を「行」にすることで、以下の列ピボット解除を行わずに、一気に「好きな飲み物列」の各行にデータの展開が可能です。最後にその手順のアニメーションGIFを追加しました。ご指摘ありがとうございます!

データを区切ったまではいいのですが、まだこのデータは分析には向いていません。ビールやウィスキー、ワインといったデータは「好きな飲み物」の列にタテに入ることで、ピボットテーブルを使った分析が可能になります。

この横に並んでいるデータを縦にするのが「列のピボット解除」の機能です。すでにこの機能は以前の投稿で何度も紹介しています。クロス集計表・マトリクス表でデータが提供されてしまうことが多いExcel界隈では、本当にこの機能を知っている、この機能の使い方を熟知しているか、そうでないかで大きな違いがでると思います。

以下、その手順をおったアニメーションGIFです。
列ピボットの解除
ピボットテーブル レポート機能を使って集計する

ここまでデータの整形ができれば、あとはピボットテーブル レポートを使って集計が可能になります。

まずはビール、ウィスキー、ワインそれぞれがいくつ選ばれているかを集計します。もとのデータは1セルにカンマ区切りで入っていたデータを、列分割と列ピボット解除でテーブル形式にしたデータに整形し、ピボットテーブル レポートにします。

以下が、上記のアニメーションGIFの終わりの状態(クエリ エディターで列ピボット解除の状態)からピボットテーブル レポート作成までをアニメーションGIFにしたものです。
ピボットテーブル レポートの作成
あとは、ピボットテーブル レポートの機能を使ってクロス集計による分析が可能になります。地域毎や性別などで、どんな飲み物が選択されたか集計できます。アニメーションGIFの最後のほうではウィスキーを選んだデータのドリルダウンを行っています。ピボットテーブル レポートだからこそできる分析機能ですね。
ピボットテーブル レポートによる集計とドリルダウン
ここまで「一行も」関数を使った数式やVBAのコードを書いていません。

まとめると、データの取得と変換、Power Queryに代表される「ETL機能」を Excel で使うべき理由は、極端なことをいえば「ピボットテーブルで分析しやすいデータを作る」ことかもしれません。集計や分析でピボットテーブルを使いこなす人にとっては無くてはならないものです。

Power Query(取得と変換)とピボットテーブルはセットで覚えてしまうのをお勧めします。

皆さんの業務の参考になれば幸いです。
[追記] 列のピボット解除ではなく、列の分割の詳細オプションで行に展開した場合のアニメーションGIFが以下です。こちらのほうが簡単!
なお、このオプション名の「分割数」ですが、英語版は「Split into」で「分割先」です。このオプション、最初は分割先として列しかなく、最大数を指定していた記憶があり、途中で分割先として「行」が追加されたと思います。その名残りでしょう(要は更新し忘れているのでしょう)

列の分割の詳細オプションを使って、それぞれの行に展開する

[追記 2022/2] カンマで区切られた複数回答を複数行にして行を増やしたくない、以下のような結果がほしい、という参照記事を見かけました。上のやり方にもうちょっとだけ手を加えると自分の好きな集計結果にできるので追記します。

上記のサンプルを例にすると、以下のような表がほしいようです。
ビール   3
ウィスキー 4
ワイン   4

またはそこからビールを選んだ人だけの表
ビール Aさん
ビール Bさん
ビール Cさん

これは「集計結果の表」で、考え方としては本ブログでそれそれの行に展開したデータ(テーブル)をデーターソースとして、関数やフィルター機能などを使って集計するのですが、ピボットテーブルさえ覚えてしまえば、このような集計はあっという間にできます。
PowerQuery(取得と変換)でデータソースを整理して、集計はピボットテーブルで処理するのがモダン Excel の呼吸 壱の型みたいな鉄板だと思います。
以下ではデータソースとなるテーブルから「ピボットテーブル」を追加し、飲み物でまとめたレポートを作成します。そしてビールの行の数字をダブルクリックして、ビールを選んだ人の表を作成しています。

Power Query を使ってデータベースにある大量のデータを処理してレポート作成をする業務になればなるほど、Excel のセル関数を使う場面は少なくなり、データソースであるテーブルにフィルターをかけて「生データを眺める」こともデータ量が多いので現実やらなくなります。逆に SUMIFS 関数など知らなくてもいいので、ピボットテーブルさえできれば、集計は可能ですし、教育コスト(習得まで時間がかかる)が高いVBAを学ばなくても、必要な表をピボットテーブル上でダブルクリック(ドリルダウンと呼びます)で一瞬で作成できます。

暴論ですが、(元データが比較的整い、綺麗なデータを扱うことができる)ビジネスパーソンは関数やVBAをやらなくてもいいので、Power Query とピボットテーブルの機能をマスターすると、かなりデータ抽出、集計およびレポートの時短が可能になり、間違いも少なくなると思っています。

2015/07/07

Power Query から https 経由で SharePoint の Excel ブックを開く

Power Query (2.23.4035.242 June 2015 Release) で https 経由で SharePoint のドキュメントライブラリに保存されている Excel ブック、および OneDrive for Business にある Excel ブックへのアクセスが可能になっていることを確認しました。(もしかしたら、May 2015 Release からかもしれません、、、、)

Power Query は頻繁に更新されています。数か月前は https 経由で SharePoint や OneDrive for Biz の Excel へのデータ接続はできませんでした。ローカル PC の同期フォルダーを使っているのであれば、同期フォルダー内の Excel ブックにデータ接続可能でした。

今後は同期フォルダーを構成していなくても、https 経由で Excel ブックに接続可能です。(ただし、コンシューマー版の OneDrive へのアクセスは成功していません。([*1] 2022年追記 URLを編集して可能になっています)OneDrive for Business は Office 365 で提供されている OneDrive です。これは SharePoint をベースにしています)

取り込み手順

使い方はいたって簡単です。

[Power Query] タブの [外部データの取り込み] の [ファイルから] にある [Excel から] を選択します。

PQDCFILEEXCEL

[ファイル名] に SharePoint ドキュメント ライブラリーの URL を入れます。

SPDOCLIBURL

この URL は SharePoint のドキュメント ライブラリーであれば_layouts の前までになります。
OneDrive for Business も同様です。

doclibURL

[開く] ボタンを押すと、SharePoint サイトにある「すべてのサイト コンテンツ」のリストが表示されます。

今回は [ドキュメント] にあるブックを開くので、[ドキュメント] をダブルクリックします。(英語表記は Shared Documents)

allsitecontents

ドキュメント ライブラリにある Excel ブックを選択し、ダブルクリックするか、[開く] ボタンを押します。
すると、Web コンテンツへのアクセス ダイアログが表示されるので、[組織アカウント] を選んで、該当する URL をチェックします。
既定が [匿名] になっているので注意してください。

AccesstoWebContent

組織アカウント(Office 365 の ID)とパスワードでサインインします。

サインインが完了すると、以下のダイアログになるので [接続] をクリックします。

AfterSignIn

ナビゲーター ウィンドウが表示されるので、取り込みたいシートやテーブルを指定します。

PQNavigatorWindows

[編集] ボタンを押せば、クエリ エディタ ウィンドウが表示され、クエリの編集をすることができます。
クエリ エディタ ウィンドウではデータの絞り込みや並べ替え、列の削除や追加、データ型の変換を行い、欲しい形でデータを取り込むことができます。

QueryEditorWindow

[閉じて読み込む] を押せばワークシートにデータが展開されます。特に編集の必要がなければナビゲーター ウィンドウの [読み込む] ボタンでデータの読み込みが可能です。

ImportData

これまで、ファイルサーバー上の Excel ブックへのデータ接続は可能でしたが、https 経由でのデータ接続は少なくとも半年前はできませんでした。これにより、\\サーバー名 でのアクセスと同じように https:// で SharePoint 上にある Excel ブックへの接続が可能になりました。

何がうれしいの?

真っ先に思い浮かべたのが「Excel アンケート」です。

アンケートの共有をしている間は、ローカルの PC/Excel でブックを編集モードで開くことができません。

locked

アンケート集計が溜まってくると、ピボットテーブルを使って分析したくなるのですが、Excel Online ではピボットテーブルをゼロから作ることができません。
こんなときには Power Query を使って、SharePoint にある Excel ブックをクエリで読み込むことでピボットテーブルを作り、データ分析が可能になります。もちろん [データ更新] によって、最新のデータにすることも可能です。

次に使えるのは外部ブックのテーブル オブジェクトへのリンクです。これは SharePoint のドキュメント ライブラリーにある Excel ブックに限らず、ローカル PC やファイルサーバーでも同様です。

ここに、外部ブックの範囲に対して VLOOKUP を使ってデータを参照しているブックがあるとします。範囲の場合は再計算によって「その時の」外部ブックのデータを取り込む(=更新)することが可能です。

このブログで過去に紹介しているように、VLOOKUP や INDEX、MATCH などの「範囲指定」する関数にとって、範囲を「テーブル」にすることで、データの増減に自動的に対応可能になることは、テーブルを使う最大のメリットなのですが、テーブルの場合は外部リンクは使えないのです。このことはマイクロソフトの技術記事でも紹介されています。

Excel テーブル 数式で構造化参照を使う(support.office.com)

ここで「構造化参照を活用するヒント」に以下の記述があります。

“他のブックの Excel テーブルへの外部リンクを含むブックを使用する     ブックに別のブックの Excel テーブルへの外部リンクが含まれている場合は、リンクを含む「リンク先」ブックの #REF! エラーを回避するため、そのリンクされた「リンク元」ブックを開いておく必要があります。リンク先ブックを最初に開くと、#REF! エラーが表示され、その後リンク元ブックを開くと、エラーは解決します。リンク元ブックを最初に開くと、エラー コードは表示されません。” (引用おわり)

つまり、リンク先ブックを開いておかなければ、別のブックのテーブルへリンクしている数式は #REF! エラーになります。

これを回避するために、リンクを使わず、Power Query を使うことで #REF! エラーを回避しつつ、データ更新によって最新データを参照することが可能になります。

この機能拡張によって、Office 365 の SharePoint や OneDrive for Business を Excel の保存先として、従来のファイルサーバーのように使うことが可能になりました。

 

毎月にようにリリースされる新しい Power Query については、英語ですが Office Blogs で新リリースごとに紹介されています。

https://blogs.office.com/


[*1] OneDrive パーソナル (onederive.live.com) の Excel ファイルに接続する方法
https://road2cloudoffice.blogspot.com/2022/04/power-query-onedrive-onederivelivecom.html

2014/12/16

入力としての Excel アンケート

Excel ユーザーが「入力・計算・出力」の考え方で Excel や Office 365 のサービス/仕組みを適所適材で使うことが Office 365 の活用の早道である。

Excel Services が出力Office 365 SharePoint リストが入力で活用できることはすでに述べたが、もうひとつ Excel ユーザーとしてぜひ知っておきたいクラウド機能がある。

それが、Excel アンケート機能だ。

Excel アンケートとは

実は Excel アンケート機能は Office 365 だけの機能ではない。マイクロソフトがコンシューマー向けに提供している OneDrive でも Excel アンケートを利用できる。

OneDrive の Excel アンケート

企業向けの Office 365 OneDrive for Business さらには外部共有を許可した SharePoint Online のドキュメント ライブラリーでも Excel アンケートを作成することができる。外部共有を許可していないサイト コレクションのドキュメント ライブラリーでは作成からメニュー表示されないので注意していただきたい。

SharePoint ドキュメント ライブラリーの Excel アンケート

この Excel アンケートは、アンケートをお願いしたいユーザーに Excel を送るようなものではない。
アンケートを作成すると、そのアンケートは Web ページとなる。Excel アンケートの URL を受け取ったユーザーが Web を通してアンケートに答えると、その結果が OneDrive や SharePoint ドキュメント ライブラリーの Excel に入力される、というものだ。

アンケートを作成するのはいたって簡単だ。Web ページを作るといった感覚は全くない。

アンケートを作成する

OneDrive でも SharePoint Online ドキュメント ライブラリーでも Excel アンケートの作成方法は一緒だ。Excel アンケートを選ぶと「アンケートの編集」画面が表示される。「タイトル」や「説明」の入力欄がある。


さらに質問項目のエリアをクリックすると質問設定入力のエリアが表示される。


回答のタイプとして7種類用意されている。「段落の内容」はわかりづらい表現だが、「テキスト」が一行テキストであり、「段落の内容」は複数行テキストボックスである。

数値タイプでは書式が選択可能だ。「通貨」は自動的に日本の場合は円(\)が設定される。

選択肢タイプでは選択項目を入力・設定することが可能だ。

こうやってアンケートを完成させると、質問が列名の Excel ワークシートができあがる。


アンケートを共有する

作成されたワークシートのリボンのテーブルのセクションに「アンケート」がある。▼ を押して「アンケートの共有」を選択する。

アンケートの共有ダイアログに URL が表示される。これをコピーしてアンケート対象者に送る。SharePoint Online の場合は、URL がかなり長いので URL 短縮サービスを使うことをお勧めする。コンシューマー向けの OneDrive には共有リンク作成の際に URL 短縮機能がついている。


URL を開くと以下のような Web ページが表示される。


このアンケートの各質問項目に答えて [送信] をユーザーが押すと、その内容が Excel に反映されるのだ。

一度作ったアンケートの修正も可能だ。また、アンケートの URL を無効にすることもできる。

注意点はまだ微妙な実装があるところだろう。致命的ではないが、たとえば、[Yes/No] はアンケートでは [はい/いいえ] になるが、入力される値は既定値のままだと英語で、ドロップダウンリストから選択すると日本語になったり(この対応は選択肢タイプで「はい/いいえ」を作ればよい)、数値で書式をパーセンテージにして 10 と入れると 1000% になる。 0.1 といれれば 10% といったものだ。日付の入力などはYYYY/MM/DD を入力させるよりは日付ピッカーが欲しいところだ。このあたりは実際に試して確認することをお勧めする。

ピボットテーブルで計算、Excel Services で出力

このアンケート機能によって入力部分におけるメリットはすぐに理解できるだろう。アンケート結果は自動的に Excel に入力されるが、本質は「集計」である。この集計をピボットテーブルで行うことを前提として質問項目を設定するのがポイントだ。(フリーでなるべく入力させずに、選択肢から選択させることでデータを集計しやすくする、など)もちろん、アンケート結果は「テーブル」形式であり、ピボットテーブルは元データの範囲を指定しなおすことなくデータの増減に対応する。さらにピボットテーブルからグラフを作成し、ダッシュボード的なシートを作って Excel Services で表示することで、即時に結果を確認することが可能になる。(ただし、現状(2014/12)確認している限りでは Excel Services からのピボットデータ更新は不安定なときがある。(更新されない)ローカルの Excel で開いてピボットの更新、保存で対応する必要がある。)

まだ安定しているとは言えないが、今後のクラウドにおける Excel の方向性と可能性を感じることができるサービスであることは間違いない。コンシューマー向けの OneDrive でも利用可能なので、是非体験してほしい。

残念ながらできないこと

Excel アンケートは匿名アクセスを許可しているようなものなので「だれが」入力したかをシステム的に知ることはできない。そのため名前や ID などをアンケートの質問項目として自己入力してもらう必要がある。

さらに、「いつ入力したか」を知る術も現在のところない。Excel には TODAY() や NOW() などの関数があるが、アンケートからは関数を既定値として入力することができず、また、Excel ユーザーであれば気づくと思うが、この関数を使ってしまうと「常に再計算」される可能性があり、入力時点の日付や時間ではないことに気が付くだろう。

これらを解決したいのであれば、SharePoint の外部ユーザー招待を使って SharePoint リストでアンケートを実施するしかない。しかし、そうなると匿名アクセスはできず(だれが、を知るには当たり前だが)、必ずマイクロソフト アカウントもしくは Office 365 の組織アカウントでサインインしてもらう必要が出てくる。Office 365 ユーザー同志であれば問題ないが、一般ユーザーがアカウントの使い分けを熟知しているケースは少ないため、実際問題としては広く活用することはないだろう。

[参照] SharePoint Online 環境の外部共有を管理する
https://support.office.com/ja-jp/article/SharePoint-Online-%E7%92%B0%E5%A2%83%E3%81%AE%E5%A4%96%E9%83%A8%E5%85%B1%E6%9C%89%E3%82%92%E7%AE%A1%E7%90%86%E3%81%99%E3%82%8B-c8a462eb-0723-4b0b-8d0a-70feafe4be85
Powered by Blogger.

自己紹介

自分の写真
1989年新卒で日本IBMに入社しダウンサイジング担当としてホストコンピュータと繋げるオフコン、UNIX、PCサーバーのプロジェクトを担当。1997年 MSKK(現日本マイクロソフト)入社、NT4出荷に伴い企業向けサポート部門のビジネスマネージャーとして Excel 使いとなり、2002年 にMSMVPなどをサポートするユーザーコミュ二ティ部門を設立、部門をリード。2006年にMSKK退職後、企業向けのITトレーニング会社・団体に携わり、2014年頃よりPowerBI勉強会主催メンバーの一人として参画、そのコミュニティ活動で MSMVP for Data Platform PowerBI 2017受賞。https://mvp.microsoft.com/ja-jp/PublicProfile/5002635 同年にMVP Awardを返上し、アマゾン ウェブ サービス ジャパンに入社、コミュニティプログラム担当として現在に至る。