PDFの表データ→Excel表に変換(半角空白で区切られている場合)

2021年9月26日

お仕事などでお客さんからPDFで資料が送られてきて、
そのデータを基に仕事を進める際に、そのデータをExcelに写して
作業を進める事は多いのではないでしょうか?

◆PDF表のデータをコピーし、Excelに貼付けたら、
 データが半角空白でそれぞれ区切られて表示された
◆PDF表データは1セルも空白が無い状態だ

PDFの表_Excel表に転記_空白の区切_6
PDFの表データ(左図)をコピーして、Excelに(テキストのみ)貼付けするとそれぞれの項目が空白で区切られる(右図のような)場合、ありませんか?

今回は↑の件に当てはまる
【PDFの表データ→Excel表】に転記する方法を記載します。
※お急ぎの方は、記事中腹に変換用の数式が入ったファイルをアップロードしましたので、
 そちらをダウンロードして頂き、ご活用ください。
 

広告

『データが半角空白で区切られている場合』とは具体的には

PDFの表部分をコピーして、Excelに貼り付けると、冒頭の画像のようになる場合です。
また再度注意点ですが、これからご紹介する方法では
表がびっしり1セルも空白が無い場合にのみ、有効です。
この場合は是非とも、下記の方法を参考に解決されたら嬉しいです。
 

PDFの表_Excel表に転記_空白の区切_3
空白があるとうまく機能しませんので、ご注意を

空白がありますと、その部分はうまく表示されませんので、
個別の対応(変換)が必要となります。空白が1~2か所程度ならば対応出来ると思いますが。

※PDF表のデータをコピー&貼付けした際に、データが縦1列に表れてしまう
 そんな場合は、別の記事にまとめましたので、下記をご参照いただけると幸いです。
 

 
空白で区切られている場合は、あらかじめ準備しておいた数式を使って分離します。
それでは参りましょう。
 

関数・数式を使ってデータをExcelに一発変換

PDFの表_Excel表に転記_空白の区切_5
PDFからコピーした元データを【B5】に貼り付けると、【E5】から記入していた関数・数式が作用し、1セル1セルに分割されます。

 
以下の関数を使います。

■FIND関数
■LEN関数
■MID関数
■LEFT関数
■RIGHT関数
 ※IFERROR関数 は見た目の問題。ここではおまけみたいな感じです。

どのように変換するかというと、下のファイルのように、
1列目、2列目、3列目…という具合に関数・数式を入れていき、
とある1列に空白で区切られたPDFの表データを貼付けするだけです。

ファイルを添付しますので、お試ししてみてください。
※UPしているファイルにはPDF表データが「2列x30行」~「10列x30行」分あります。列数に応じてそれぞれのsheetにデータを入れ込んでください。
 

 
ファイルをダウンロードするのが、気にかかる方は
下記の要領で、自作で数式を入れてみて下さい。
 

数式を自作する場合

PDFの表_Excel表に転記_空白の区切_8
アップロードしたファイルはちょうど、上の画像のようになっています。【B5】にPDFからコピーしたデータを貼付けると【E5】から入力してある数式で、右側にExcelに変換したデータが出ます。

例えば、アップロードしたファイルのように
・【B5】を先頭にPDF表データを貼付けし、
・【E5】を左上の隅として抜き出すデータを入れ込む場合

◆1列目…=IFERROR(MID(B5,1,FIND(” “,B5,1)-1),”-“)
◆2列目…=IFERROR(RIGHT($B5,LEN($B5)-(LEN($E5)+1)),”-“)
◆3列目…
=IFERROR(MID($B5,LEN($E5&$F5)+3,FIND(” “,$B5,(LEN($E5&$F5)+3))-(LEN($E5&$F5)+3)),”-“)
◆4列目…
=IFERROR(MID($B5,LEN($E5&$F5&$G5)+4,FIND(” “,$B5,LEN($E5&$F5&$G5)+4)-(LEN($E5&$F5&$G5)+4)),”-“)
◆最終列…=IFERROR(RIGHT($B5,LEN($B5)-(LEN($E5&$F5&$G5)+3)),”-“)

もしもPDFのデータが6列以上の場合、
もしくは5列未満の場合は、以下に簡単な数式の説明をします。
そちらを参考にして頂けますと幸いですが、
自分でも説明がうまくできていると思えないので、ファイルをご覧頂いた方が早いと思います(笑)
 

数式の(簡単な)説明

PDFの表_Excel表に転記_空白の区切_7
基本的な構造はMID関数を使用しています。例として5列あるうちの3列目を取り上げています。

◆1列目に関しては

[ MID( ” PDF元データ ” , 1 , FIND( ” “, ” PDF元データ ” , 1 ) -1)

◆点線部分 [ +3 ] は2列目以降に追加する項目で

2列目= [ +2 ]
3列目= [ +3 ]
4列目= [ +4 ]
5列目= [ +5 ]・・・
 と1ずつ足していきます。これは1列分の空白が増える分、
 MID関数の開始位置を1文字分遅らせる為です。

◆下線部②、③のLEN関数の部分に関しては

2列目= [ LEN( “1列目 ” ) ]
3列目= [ LEN( “1列目 & 2列目 ” ) ]
4列目= [ LEN( “1列目 & 2列目 & 3列目 ” ) ]
5列目= [ LEN( “1列目 & 2列目 & 3列目 & 4列目 ” ) ]・・・
 と列数に応じて増やしていきます。

◆そして最終列は

[ =RIGHT( ” PDF元データ ” , LEN( ” PDF元データ ” ) – (LEN( ” 今までの列 ” ) + ” 最終列 -1“) ]

これで完成です。後はデータを【B2】に張り付けるだけです。
もしも複数行ある場合は、その分だけ下に入れ込んだ数式を伸ばして下さい。

今回、各関数がどのように作用しているか、の細かい解説は抜きにしますが、
つまるところ、MID関数を軸にして、
次の空白までに何文字あるかを、数式で算出した文字数を足し・引き算する形で
該当の箇所の文字列を抜き出している状態です。

いかがでしょうか?
解決出来て、業務の効率化、時短につながれば幸いです。

広告