[NA-GIS73]で解説したジオコーディングを行うためにはあらかじめ住所リストを用意しておく必要がありますが、その一例としてiタウンページの検索結果からジオコーディングで使用する(きれいな)住所リストを作成する方法について説明します。あくまでも一案であって、もっと良い方法もあるような・・・(あれば教えてください)。
(1) Excelを起動
検索結果を貼り付けるために、あらかじめExcelを立ち上げておく。
(2) iタウンページで検索
ここでは例として、兵庫県神戸市東灘区のパン屋さん(パン店)を検索してみる。検索結果は34件(新規開店/閉店等あるので、検索結果は変動します)。
(3) 検索結果をコピー
<20ずつ表示>のところを<50ずつ表示>に変更して、できるだけ多くの検索結果を表示。その上で、検索結果の部分、すなわち、1件目の店名から34件目の「★お気に入り登録」マークまでを選択状態にし、コピー。
(4) Excelに形式を選択して貼り付け
Excelの<貼り付け>ボタンの下部(▼のところ)をクリック→<形式を選択して貼り付け>を選択。
<貼り付ける形式>の中の<テキスト>を選択し、<OK>をクリック。
Excelに検索結果が貼り付けられた。
(5) データの整形 その1
貼り付けられたデータをみると、ほとんどの部分は、
店名
住所
(1行空き)
電話番号
(1行空き)
くちコミする お気に入り登録
(1行空き)
次の店名
・・・
という状態になっていることがわかります。しかし、ところどころ、お店のキャッチフレーズ(?)が入っていたり、Eメールやサイトのアドレスがあったり、あるいは、電話番号がなかったりします。後の一括処理のために、こうした不規則性を取り除き、規則的なデータに整形します。
すべてのお店が、
店名
住所
(1行空き)
電話番号
(1行空き)
くちコミする お気に入り登録
(1行空き)
というかたちになるように、不要な行を削除し、不足している行を追加(空白の行で良い)。また、もしデータの1行目が空いていれば(上の画像では「株式会社田中屋本店」の上が空白になっている)、その空白の行を削除。以下の画像のようなかたちに整形する。
(6) データの整形 その2
(5)で整形したデータは、店名が1行目、8行目、15行目・・・と7行おきに、また、住所は2行目、9行目、16行目・・・とこれもまた7行おきに入力されていることがわかります。この規則性を利用し、Excelの関数を使って、
店名1 住所1
店名2 住所2
店名3 住所3
・・・
というかたちにデータを整形します。
この方法については、「Excelセル関数 n行おきに抽出したい」(bettamodokiのメモ)を参考にさせていただきました。なお、ここでは関数に関する詳しい説明は省略します。気になる人は、上記ページやExcelのヘルプなどを参照してください。
今のところ、データはすべてA列に入力されているので(セルからはみ出ているのでわかりにくいですが)、B列に店名が、C列に住所が入るようにデータを加工します。
B1セルを選択。そこに、「=INDIRECT(ADDRESS((ROW()-1)*7+1,1))」と入力し、キーボードのEnterを押して確定。ちなみに、「7」の部分が、7行おきにデータを抽出することを指定している。
すると、「株式会社田中屋本店」という値が返される。そのセル(B1セル)を選択し、セルの右下の黒い四角(■)にマウスカーソルを合わせる。カーソルが十字になった状態で、黒い四角をクリックしたまま下方向にドラッグ(今回は40行目あたりまで)。
すると、B列に店名が抽出された。なお、35行目以降が「0」になっているのは、今回の検索結果が34件で、35件目以降のデータがないためである。「0」は不要なデータなので削除しておく。
同様に、C列に住所を抽出する。C1セルを選択し、「=INDIRECT(ADDRESS((ROW()-1)*7+2,1))」と入力し、キーボードのEnterを押して確定。さきほどとは、「7+2」になったところが変わっている。
株式会社田中屋本店の住所が返されるので、店名のときと同様の手順で34件目までの住所を抽出。
(7) 数式を値に変換
B・C列全体を選択してコピー。その状態で、<貼り付け>ボタンの下部(▼のところ)をクリック→<形式を選択して貼り付け>を選択。<貼り付け>の中の<値>を選択し、<OK>をクリック。
(8) 住所の整形 その1
C列全体を選択。Excelの<ホーム>タブ内の右端、<検索と選択>をクリック→<置換>を選択。
<検索と置換>ウィンドウの<検索する文字列>欄に、「(スペース)地図・ナビ」と入力(下の画像参照)。<置換後の文字列>欄には何も入力せず、<すべて置換>をクリック。
すると、住所の後ろにくっついていた「(スペース)地図・ナビ」という文字列が一括削除された。それが確認できたら、<検索と置換>ウィンドウを閉じる。
(9) 住所の整形 その2
今回作成したいリストでは、郵便番号は不要です。というわけで、C列の郵便番号を含む住所データから、県名以下の文字列だけをD列に抽出します。
D1セルを選択。そこに、「=MID(C1,14,100)」と入力し、キーボードのEnterを押して確定。なお、関数の意味は、C1セルの文字列の14文字目から100字分抽出するということである。
すると、C1セルの文字列から、「兵庫県神戸市東灘区・・・」の部分が抽出された。あとは、(6)と同様の手順で34件目までの住所を抽出。
(10) データの仕上げ
不要な列の削除や、データチェック・クリーニングを行い(今回のデータでは、2件のデータを削除し、最終的には32件に)、以下のようなかたちになれば、ジオコーディングで使用するきれいな住所リストが完成。
作業手順は以上です。ふーっ・・・・・・。