[甲南GIS11]までの流れとはがらっと変わって、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件に)、以下のようなかたちになれば、ジオコーディングで使用するきれいな住所リストが完成。
作業手順は以上です。ふーっ・・・・・・。