• ベストアンサー

住所の分割方法

顧客データで、住所フィールドが1,2,3とあり、本来であれば、 1・・・都道府県 2・・・市区町村から番地 3・・・マンション、アパート名 としなければいけないのですが、郵便番号辞典から入力したため、住所2のフィールドに1と2がくっついて入力されています。 これを都道府県で切って、都道府県名を住所1のフィールドに、市区町村から番地までを住所2のフィールドに分割したいのですが、関数もしくはマクロがあれば教えてください。 住所1には、「東京都」などの「都」に相当する都道府県名まで入れたいのですが。 (データが5000件くらいあります)

質問者が選んだベストアンサー

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.4

#1のmshr1962です。 >それとも何度か行わなければいけないのでしょうか? 都道府県で4文字になるのは県のみです。 ですので4文字目が県でなければ3文字でOKということです。 あえて都道府県を検索なら下記のURLを参照してください。 http://www2.odn.ne.jp/excel/waza/function.html 11番目に回答があります。

zakikko
質問者

お礼

再度のご回答ありがとうございます。 参考サイト確認しました。 まさにぴったりです。 ありがとうございました。

その他の回答 (4)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.5

先頭に都道府県が必ず入っている 鹿児島県がない(極く少ない) なら県名は =LEFT(A1,3)で良いでしょう。鹿児島は見て手修正。 VBAでは 県名は Sub test01() Dim セル As Range Dim 住所 As String Dim 文字位置 As Variant For Each セル In Range("a1:A12") 住所 = セル.Value Select Case Left(住所, 3) Case "北海道", "東京都", "大阪府", "京都府" セル.Offset(0, 1).Value = Left(住所, 3) Case Else 文字位置 = InStr(1, 住所, "県") セル.Offset(0, 1).Value = Left(住所, 文字位置) End Select Next End Sub 県名を除く部分 Sub test02() Dim セル As Range Dim 住所 As String Dim 文字位置 As Variant For Each セル In Range("a1:A12") 住所 = セル.Value Select Case Left(住所, 3) Case "北海道", "東京都", "大阪府", "京都府" セル.Offset(0, 2).Value = Right(住所, Len(住所) - 3) Case Else 文字位置 = InStr(1, 住所, "県") セル.Offset(0, 2).Value = Right(住所, Len(住所) - 文字位置) End Select Next End Sub ---- A列の右に2列列挿入して実行。 For Each セル In Range("a1:A12")のA12を最下行に 置換えてください。

zakikko
質問者

お礼

ご回答ありがとうございます。 マクロは覚えたてというか超初心者なので、 じっくり見て見たいとおもいます。

noname#176215
noname#176215
回答No.3

> =LEFT(A1,IF(MID(A1,4,1)="県",4,3)) 結局 都道府県で 4文字なのは 「神奈川県」 「和歌山県」 「鹿児島県」 ですよね? なら「県」だけ判断すれば良いはずです。 皆さんの 回答で充分だと思います。

zakikko
質問者

お礼

自分の質問を見直していたら、お礼し忘れていました。 大変申し訳ありません。 みなさんのおっしゃる関数でうまくいきました。ありがとうございます。

  • kkm
  • ベストアンサー率7% (1/14)
回答No.2

A1に住所が入ってるとして。 B1に =IF(MID(A1,4,1)="県",LEFT(A1,4),LEFT(A1,3)) C1に =IF(MID(A1,4,1)="県",MID(A1,5,LEN(A1)-4),MID(A1,4,LEN(A1)-3)) でどうですか?

zakikko
質問者

お礼

早速のご回答ありがとうございます。 #1の方のところに補足してあることは どのようにすればいいでしょうか?

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

元のデータがA1として 1=LEFT(A1,IF(MID(A1,4,1)="県",4,3)) 2=MID(A1,LEN(1のセル)+1,LEN(A1)) 上記は都道府県が必ずある場合のみ有効です。

zakikko
質問者

補足

早速のご回答ありがとうございます。 お答えくださった内容ですと、「県」を基準にしていますが、「都、道、府、県」すべてを一括で基準にして分割できる方法はありますか? それとも何度か行わなければいけないのでしょうか? (もしくは、IF文を4回かませる??)

関連するQ&A