今回は、PDFとして配布されている文書から表データをExcelに取り込む方法を紹介しよう。通常、PDFからのデータ取り込みは、コピー&ペーストでは上手くいかないケースが多い。そこで、「テキストエディタ」&「区切り位置」を利用した取り込み方法も覚えておくとよい。
PDFからのコピー&ペーストは上手くいかない?
分析に利用したいデータがPDF文書としてWeb上で配布されている場合もある。これらのデータを使って分析作業を進めていくことも可能であるが、そのためにはPDFの文書内にあるデータをExcelに取り込まなければならない。
ここでは、例として総務省が公開している「情報通信白書」(令和元年版)を例に、データの取り込み手順を紹介していこう。なお、このPDFは以下のURLを開くと参照できる。
まずは、最も手軽なコピー&ペーストを試してみよう。表内のデータ部分をドラッグして選択し、「Ctrl」+「C」キーでコピーする。
続いて、Excelを起動して「Ctrl」+「V」キーで貼り付けると、今回の例では以下のような結果になった。
「データを取り込めない」という訳ではなないが、全データが1つのセルに入力されてしまうため、とても使える代物にはなってくれない。
このようにPDFからのコピー&ペーストは、思い通りの結果を得られないケースが多い。さらに、前回の連載で紹介した「Webクエリ」も対象がPDFでは使用することができない。よって、何らかの工夫が必要となる。
テキストエディタを経由したデータの取り込み
先ほど示した例のように、全データが1つのセルに配置されてしまう場合は、テキストエディタを経由してコピー&ペーストすると、若干の進展がみられる場合もある。使用するテキストエディタは何でも構わない。ここでは、Windowsに付属する「メモ帳」を使った例を示してみよう。
まずは、PDF上をドラッグして表内のデータを選択し、「Ctrl」+「C」キーでコピーする。ここまでの手順は前述した例と同じだ。続いて、テキストエディタ(メモ帳)を起動し、「Ctrl」+「V」キーでデータを貼り付ける。
その後、テキストエディタ(メモ帳)で「Ctrl」+「A」キーを押して文字をすべて選択し、「Ctrl」+「C」キーでデータをコピーしなおす。
このデータを「Ctrl」+「V」キーでExcelに貼り付けると、以下の図のような結果を得られる。
まだ表形式のデータにはなっていないが、各行が改行されているだけでも進展したといえるだろう。このような形になれば、Excelに用意されている「区切り位置」という機能を使って、データを分割することが可能となる。
「区切り位置」を使ったデータの分割
続いては、「区切り位置」を使ってデータをセルに分割していく方法を紹介しよう。データが入力されているセル範囲を選択し、「データ」タブにある「区切り位置」をクリックする。
すると、「区切り位置指定ウィザード」という画面が表示される。最初の画面では「カンマやタブなどの区切り文字によってフィールドごとに区切られたデータ」を選択し、「次へ」ボタンをクリックすればよい。
次の画面では「区切り文字」を指定する。PDFから取り込んだ場合は、各データの間に半角スペースが挿入されているのが一般的だ。よって、「スペース」のチェックボックスをONにしてから「次へ」ボタンをクリックする。
最後の画面では「各列のデータ形式」を指定する。とはいえ、現時点では正しくデータが分割されていない場合が多く、列がずれてデータが配置されている部分もある。よって、とりあえずは「G/標準」のまま「完了」ボタンをクリックすればよい。
これでデータをセルに分割することができる。ただし、大部分のデータは「それなりの配置」に分割できているが、一部、正しく分割されていないデータも見受けられる。今回の例では、一番上の「見出しセル」のデータ分割が上手くいっていないようだ。
これは「2000」と「年」の間などに「半角スペース」が挿入されていたことが原因だ。とはいえ、この程度の修正であれば、手作業で進めてもたいした手間ではないだろう。今回の例の場合、最初のセルに「2000年」と手入力し、オートフィルでコピーすると、正しい「見出しセル」に修正できる。
以上で、表の取り込みは完了となる。あとは必要に応じて書式を指定したり、数式や関数を使ってデータを処理していけばよい。
このように「テキストエディタ」&「区切り位置」を利用すると、PDFで配布されている文書であっても、少ない手数でデータをExcelに取り込むことが可能となる。覚えておくと、いずれ役に立つだろう。
「セルは範囲の移動」で列のズレを解消する
もうひとつ例を紹介しておこう。以下の文書は、経済産業省が公開している通商白書(2019年版)の一部となる。
この文書内にある表を前述した手順でデータを取り込み、「区切り位置」でセルに分割すると、以下の図のような結果が得られた。この表は「見出し部分」が格子状になっていないこともあり、少し乱れた形でデータが取り込まれているといえるだろう。
これを正しい表に修正する手順を示していこう。まずは「見出しセル」の文字を手入力して修正する。
続いて、列の乱れを修正する。今回の例は「OPEC」の文字の前後に半角スペースが挿入されていたため、データがズレて配置されてしまっている。これを正しい配置に直すときは、ズレて配置されているセル範囲を選択し、緑色の枠線を左右にドラッグして移動すればよい。
これで、すべてのデータを正しい位置に配置できたことになる。「区切り位置」でデータを分割した直後に多少の乱れがあっても、意外と簡単に修正することが可能である。
ただし、この表をよく見ると、小数点以下の桁数がバラバラになっていることに気付くと思う。これは「通貨」の表示形式が指定されているセルがあることが原因だ。表示形式を自分で指定しなおし、小数点以下の桁数などを揃えておくとよい。
さらに、表の途中に集計行が含まれていることにも注意しなければならない。このため、「各列のデータの合計」と「合計のセル」に入力されている数値は一致しない。この表をもとにグラフを作成したり、データ分析を行ったりするときは、あらかじめ集計行を削除しておくとよいだろう。
今回、紹介したテクニックを覚えておくと、PDFで公開されている文書であっても「分析用のデータ」として活用できるようになる。多少の修正は必要であるが、すべてのデータを自分の手で入力する場合と比べれば、かなり時間の短縮になるはずだ。気になる方は実際に自分の手を動かしながら、操作手順を確認しておくとよいだろう。