エクセルを使った住所データ処理の方法についての質問です。


住所(都道府県市区町村地域名まで;番地なし)が入力されたセルが縦に数千並んだデータを持っています。
これを、都道府県・市区町村・地域名と3つのセルに分割する方法をおしえてください。

今:
A県B市C町
D県E市F町

変換後:
A県 B市 C町
D県 E市 F町

のようにしたいです。
方法は、エクセルもしくはエクセルと互換性のあるソフトウェア(Webアプリ含む)を利用したものがよいです。
ソフトウェアはなるべくフリーのものを希望しますが、だめなら駄目でかまわないです。
データ数が多いので、手作業的なものは不可です(一部手作業なら可)。

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2010/09/01 23:50:26
  • 終了:2010/09/02 10:39:20

ベストアンサー

id:choko_sa No.3

najirane回答回数78ベストアンサー獲得回数152010/09/02 01:00:52

ポイント27pt

恐ろしく冗長な方法になるかも知れませんが

「ZIPJIS」http://kitagawa.tv/zipjis/zipjis.htm

のような「市町村コード」が収録された住所データベースを入手します。


ACCESS等あれば簡単なのですが、EXCELでやるならZIPJISデータの住所部分を連結したデータを作成した物を対象に、お手元のデータからVlookupして「住所コード」を引き出します。


住所コードは「県|郡市区|町村」に分離出来ますので、これを同時に引き出しておくと楽でしょう。


最後にお手元のデータから上記部分を削除した物が町村以下の「地域名」になります。


以上で分割した素材が揃います。あとは再結合するなり分割したまま使うなりご自由に。


※実はこの方法は某レンタルシステムで、会員記載の(正しくないかも知れない)住所から、正しい住所を導く為に使った方法です。

id:tsubo1

ありがとうございます。この方法で作業をおこないます。

2010/09/02 10:36:19

その他の回答(2件)

id:SALINGER No.1

SALINGER回答回数3454ベストアンサー獲得回数9692010/09/02 00:14:15

ポイント26pt

Excelの機能だけで行う方法です。

データの入った列を選択して、置換から、

県→県,

市→市,

で置換して県と市の後ろにコンマを付けます。

次に、データの入った列を選択したまま

データ→区切り位置でダイアログを開き、

次へ→カンマにチェックして次へ→完了

でセルを分割できます。

ただし、ただしく分割できるのは県や市があるデータだけです。

道や府も置換で対応できますが、市の無い住所の場合はこの方法ではできませんので、

何かの住所のデータベースが必要になるかと思います。

id:SALINGER No.2

SALINGER回答回数3454ベストアンサー獲得回数9692010/09/02 00:59:01

ポイント27pt

先に紹介した方法だとかなり手作業の修正箇所が出てくると思うので、

マクロを使ったより精度の高い方法です。


A列にデータがあるとして、以下のコードを標準モジュールにコピペして実行すると分割します。

この方法でもあらゆる住所には対応できないので、完璧なものは住所録が必要ですが、修正箇所がかなり少なくなるはずです。

Sub Macro()
    Dim i As Long
    Dim lastRow As Long
    Dim s As String
    Dim p1 As Integer
    Dim p2 As Integer
    
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row
    
    For i = 1 To lastRow
        p1 = 3
        s = Cells(i, 1).Value
        Select Case Left(s, 3)
            Case "東京都"
                Cells(i, 1).Value = "東京都"
            Case "大阪府"
                Cells(i, 1).Value = "大阪府"
            Case "京都府"
                Cells(i, 1).Value = "京都府"
            Case "北海道"
                Cells(i, 1).Value = "北海道"
            Case Else
                p1 = InStr(1, s, "県")
                If p1 > 1 Then
                    Cells(i, 1).Value = Left(s, p1)
                Else
                    Cells(i, 1).Value = ""
                End If
        End Select
        
        p2 = InStr(1, s, "市")
        If p2 < 1 Then
            p2 = InStr(1, s, "区")
            If p2 < 1 Then
                p2 = InStr(1, s, "町")
                If p2 < 1 Then
                    p2 = InStr(1, s, "村")
                End If
            End If
        End If
        
        If p2 > 1 Then
            Cells(i, 2).Value = Mid(s, p1 + 1, p2 - p1)
            Cells(i, 3).Value = Mid(s, p2 + 1)
        End If
    Next i
End Sub
id:choko_sa No.3

najirane回答回数78ベストアンサー獲得回数152010/09/02 01:00:52ここでベストアンサー

ポイント27pt

恐ろしく冗長な方法になるかも知れませんが

「ZIPJIS」http://kitagawa.tv/zipjis/zipjis.htm

のような「市町村コード」が収録された住所データベースを入手します。


ACCESS等あれば簡単なのですが、EXCELでやるならZIPJISデータの住所部分を連結したデータを作成した物を対象に、お手元のデータからVlookupして「住所コード」を引き出します。


住所コードは「県|郡市区|町村」に分離出来ますので、これを同時に引き出しておくと楽でしょう。


最後にお手元のデータから上記部分を削除した物が町村以下の「地域名」になります。


以上で分割した素材が揃います。あとは再結合するなり分割したまま使うなりご自由に。


※実はこの方法は某レンタルシステムで、会員記載の(正しくないかも知れない)住所から、正しい住所を導く為に使った方法です。

id:tsubo1

ありがとうございます。この方法で作業をおこないます。

2010/09/02 10:36:19
  • id:SALINGER
    簡単な置換による方法を紹介しましたが、あまり良い方法でもないのでオープンしなくてけっこうです。
  • id:tsubo1
    簡単な方法ですが、とりあえずのところはこれでもいけそうです。ありがとうございます。
  • id:SALINGER
    都、道、府、県、市、区、町、村、全部置換して分割して、4列以上になったものをあとは手作業で直すとかかな。
    四日市市みたいなのがあるからね。
  • id:taknt
    基本的には 無理です。
  • id:SALINGER
    ついでにZIPJISを使った住所の分割のマクロも作ってみたので参考にしてください。
    http://d.hatena.ne.jp/SALINGER/20100902
  • id:hathi
    SALINGERさんのアップされた 2010-09-02 14:18:24
    http://d.hatena.ne.jp/SALINGER/20100902 は、すごいです。
     
    石川郡野々市町、余市郡余市町大川町、四日市市市場町、京都市左京区静市市原町、
    南あわじ市市市、長野市南県町、西諸県郡高原町のような住所もあって、
    固有名詞と都道府県市区町村の区分文字を識別させるにはかなり面倒だと
    思っていました。

    choko saさんの回答で「ZIPJIS」http://kitagawa.tv/zipjis/zipjis.htm の
    ような存在を知ったので(それまで郵便番号のZIPしか知らなかった)
    これを利用してマクロを考えてみようとしていました。
    まだ何も具体的な案にならないうちに、SALINGERさんが発表されていました。
     
    今になってそのマクロの内容を見せていただきましたが、議会のあるような
    行政単位までのリストを作ってからやるんですね。
    発想の方法・テクニックとても及びません。今後の参考にさせて下さい。
     
    choko saさん SALINGERさん ありがとうございました。

この質問への反応(ブックマークコメント)

トラックバック

  • Twitter Trackbacks 2010-09-02 00:12:19
  • 住所分割 http://q.hatena.ne.jp/1283352623 面白そうなので、VBAでZIPJISを使った住所分割をしてみる。 ZIPJISを解凍すると、ZIPJIS9B.K3というファイルがCSVのデータのようなので、 このファイルを実行さ
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません