PDFは世界でも広く使われているので、入手した PDF の データを転記する作業 も多いと思われます。
「せっかくの電子データだから人手に頼らずに処理できないのか?」 と悩んでいる方も多いのではないでしょうか?
そんな悩みを解決してくれるのが Excel Power Query による PDFファイルの読み込みです。
この記事では 具体的な例題 でPDFファイルをExcelに読み込んで活用する方法をご紹介します。
この記事で紹介するテクニックを活用すれば、あなたもPDFファイルからデータを取り出して活用できるようになると思います。
身の回りにあふれるPDFのデータを自在に扱えるようになれば仕事の効率が上がること間違いなしです。
是非皆さんもPDFデータの活用にトライしてみて下さい。
では、早速いってみましょう!
例題 世界のGDPデータを取り込む
例題として、一般財団法人 国際貿易投資研究所 が公開している 国際比較統計 から 「世界の名目GDP」 を扱わせていただきます。
まず、PDFの中身を見てみましょう。

念のためダウンロードさせて頂いたファイルこ コチラ に置いておきます。
大きな表があって数値データもたくさんあります。これを人力で転記するのは避けたいところです。
コピー&ペーストも上手くいかない
「わざわざ Power Query を使わなくても コピー&ペースト できるんじゃない?」と思う方も多いと思います。
しかし、PDFの表をコピー&ペーストしても上手くいかないケースが多いです。
実際、このPDFの表をコピー&ペーストした結果は図のようになってしまいました。

Power Query で例題のPDFを読み込む
Power Query を使えば PDF の中にある表を簡単に読み込むことができます。
ここから Power Query でこのPDFファイルを読み込む手順を解説していきます。
手順ごとに必要な予備知識も解説しますので、順に読み進んで下さい。
メニュー操作
まず、Excel のメニューから操作します。

続いてファイル選択ダイアログが出るので読み込むファイルを選択して「インポート」ボタンを押します。

データ選択
PDFファイルを選択して「インポート」ボタンを押すとファイルが読み込まれ、図のようにデータを選択するウィンドウが開きます。

一覧に表示されるものが2種類あります。
Table… の項目
これはページの中にある表のデータを取得したい場合はこの項目から選びます。
項目を選択するとプレビューが表示されるので欲しいデータになっているか確認しながら作業を進めます。
Page… の項目
これは表のみに限定せず、ページに記載の情報を丸ごと読み込む項目です。
表以外のデータも取得したい場合や、うまく表が認識されない場合はこちらを選択します。
例題のファイルでは2ページにわたって表がありますので、この2つの表を選択します。

データの選択が終わったら次の処理を選択します。

選択肢が3つもあって最初は迷ってしまいます。
データの変換
データを読み込み、続いてデータを加工します。
通常は読み込んだデータは多少の加工が必要なので、これを選択するのがオススメ です。
読み込み
データを読み込んで、そのまま Excel のテーブルに出力します。
未加工のデータがテーブルに出力されるので、通常ではあまり使わないと思います。
読み込み先…
データを読み込んで、それを Excel のテーブルに出力するかなど出力先を選択できます。
「読み込み」と同様に未加工のデータなので、通常ではあまり使わないと思います。
データを加工
読み込み直後のデータは図のように色々と整備が必要です。

一見大変そうですが、Power Query には強力なデータ加工の機能がついているので簡単に加工することが可能です。
順に処理していきます。
1行目を列名に設定
最初は列名は “Column1” などの表示になっています。
データをよく見ると1行目は列名になっているようですので、これを列名に変換します。
図のように操作して1行目を列名に変換します。

不要な行を削除
データを見ると最初の2行は世界の集計値が入っています。今回はこのデータは不要なので図のようにして行を削除します。


不要な列も削除
更に、一番右には「伸び率」というデータもありますが、これも不要なので図のようにして列を削除します。

横並びの「年」を縦並びに変換
理想のデータ形式は縦並びの形です。
しかし、このデータは人が読みやすいように 横に「年」 が並んで、縦に「国名」 が並んだ形になっています。
この形は、データ処理の世界では 「ピボット」 と呼ばれています。
今回はこの「ピボット」されたデータを元に戻します。図のようにして 「ピボット解除」 をします。


列名の修正
ここで、もう少しだけデータを整えます。現在の列名を次のように修正します。
- 属性 ⇒ 年
- 値 ⇒ GDP

年の末尾の「年」の文字を削除する
年は数値ですが末尾に「年」という文字がついているとデータ型を変換した際にエラーになってしまいます。
エラーにならないように図のように「年」の文字を削除します。

「n.a.」はゼロに変換
良く見るとGDPの列に「n.a.」という文字データが含まれているのが分かります。
これも数値型に変換する際にエラーになってしまいますので、「年」と同様に置換しておきます。
GDPは数値データなのでここではゼロに置換しておきます。

データ型を修正にする
「年」の列も「GDP」の列も「ABC 123」という表示で、データ型が未設定であることが分かります。
これを図のようにデータ型を示すアイコンをクリックして数値の型に修正します。

数値型は次の2種類があります。今回はどちらも整数にしておいて問題ありません。
- 10進数: 小数点のある数値など幅広い数値を扱えます。計測データなどは通常ではこちらを選択します。
- 整数: 整数だけ扱えます。「年」や「個数」などはこちらを選択します。
変更を「保持」して閉じる
これでデータの加工は終了ですので、Power Query エディター を閉じます。
閉じる前に変更の保持の確認ダイアログが出ますので「保持」を押して完了です。

Table002 も同様にデータ加工
2つ目のテーブルも同様に図のようにして Power Query エディター を開いてデータ加工をします。

Table001 のデータと Table002 のデータをつなげる
Table001 と Table002 を同じ形のデータに加工が完了したら、この2つのデータを図のように操作してつなげます。


Power Pivot での処理につなげる
2つのデータをつなげてデータが完成したら、これを Power Pivot で処理します。
Power Query のデータを Power Pivot で処理するためには閉じる際に図のように操作して 「データのインポート」 の設定をします。


ここで、データ モデル というキーワードが出てきました。
データ モデル とは Power Pivot が処理する対象のデータのことです。
Power Query で様々な加工を加えた上で、最後に データ モデル にして Power Pivot の処理につなげます。
後から「データのインポート」の設定をする
よくあるのが、ついうっかり「データのインポート」の設定をせずに Power Query エディターを閉じてしまうことです。
でも、大丈夫です。図のように「クエリと接続」から対象のクエリを右クリックして「データのインポート」ウィンドウを開くことができます。

Power Pivot でグラフを作成
Power Query でデータを作成したら Power Pivot で簡単にグラフを作成することができます。
図のようにしてピボットグラフを作成します。


ピボットグラフの操作
ピボットグラフが作成されると最初は何も表示の無い状態です。
図のように GDP という項目を 値 のエリアに ドラッグ&ドロップ します。

続いて同じようにして以下の項目も操作します。
- 年 ⇒ 軸
- 国名 ⇒ 凡例
- 2023順位 ⇒ フィルター
そうすると、ピボットグラフは図のようになっていると思います。

グラフのデザイン変更
デフォルトでは縦棒のグラフになっていますが、年の推移のデータなので折れ線グラフに変更します。
グラフを選択した状態で図のように操作します。

グラフの種類はマーカ付きの折れ線グラフを選択します。

順位でフィルターをかける
グラフで描画されている国の数が多すぎるので、「2023順位」のトップ5ヶ国に絞って表示させます。
図のように操作してフィルターを設定します。

すると、グラフは図のようになり、データの見える化が完成しました。

グラフ化はデータが視覚的に分かるようになるので非常に有益です。
PDFファイルの数値表からだけでは分からないようなことに気付きが得られることもあると思います。
まとめ
この記事では PDF を Excel の Power Pivot で読み込んでそのデータを活用する実践例をご紹介しました。
PDFのデータを見やすいグラフに仕上げることができました。
Power Pivot は操作をすれば様々な切り口でデータを見える化できます。今回紹介した以外の様々な集計を行うことで多くのことが分かるかもしれません。
PDFファイルは世の中で沢山活用されています。このデータを自在に扱えるようになれば、仕事の効率も格段に上がると思います。
読者の皆さんも是非このスキルを身につけて仕事の効率を上げていって下さい!