[[20160130094943]] 『住所を分割したいのですが、都道府県が省略された』(cona) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『住所を分割したいのですが、都道府県が省略されたデータが混じっています。』(cona)

こんにちは、初めて質問させていただきます。
名刺データを住所分割したいのですが、以前こちらで質問されていた方の過去ログを見て[[20030407215436]] http://www.excel.studio-kazu.jp/kw/20030407215436.html
やったらうまく出来て感動したのですが、少し問題が発生しました。

私の持っているデータは、すべて東京都、神奈川県など都道府県がついているものばかりではなく、横浜市、さいたま市、豊島区、横須賀市など都道県が省略されているものがあります。

東京都墨田区菊川3−13
神奈川県横浜市中区弁天通6
横浜市西区みなとみらい2−3
さいたま市浦和区仲町1−

とあったとすると
 
東京都     墨田区        菊川3−13   (成功)
神奈川県   横浜市中区     弁天通6     (成功)
         横浜市西区      みなとみらい2−3
         さいたま市浦和区  仲町1−

としたいのです。

どなたか詳しい方、教えていただけないでしょうか。
よろしくお願い致します。

< 使用 Excel:unknown、使用 OS:Windows7 >


回答ではありません。思いつきレベルの感想です。

今はどのような結果が得られているのでしょうか?

都道府県名のところに区市町村が入ってしまっているのであれば、
都道府県名は数がしれていますから、
都道府県名でないと判断したら、
そこに空白セルを挿入して、右にずらすことでよいのですか?

余談:
市町村コードというものが総務省から公開されているようです。
それを利用して市町村名から都道府県を探し出し、
いったん都道府県名を足してから、
後続の処理をしてみたらどうでしょうか。
(その後続処理がどの程度の精度を持っているのか知りませんが)
(γ) 2016/01/30(土) 10:17


早速のご回答ありがとうございます。
現在はご指摘の通り都道府県欄に市区町村が入っています。

最初の単純に右にずらして都道府県名は空白にして後で手打ちしようと思っていたのですが、2番めの方法だとそれも入れなくて良いので素晴らしいですね。

いずれにしましても、その数式を作るスキルがないものですからどなたか詳しい方教えていただけませんでしょうか。

なにとぞお願い致します。

(cona) 2016/01/30(土) 11:46


 γさんアドバイスの市町村リストは

http://www.soumu.go.jp/denshijiti/code.html

 ここから入手可能です。

 >>いずれにしましても、その数式を作るスキルがないものですからどなたか詳しい方教えていただけませんでしょうか。 

 どのあたりまで、自分でできますか?
 できるところまでは、自分でやって、できないところを質問されてはいかがでしょう。
 自分でやりつもりはないので、すべて教えてね というスタンスですかね?

 1.まず、都道府県リストを別途準備して(これはできますよね)
 2.各行のデータの先頭を、この都道府県リストで検索。
  (これが難しいかもしれませんが、むずかしければ現行の式で都道府県を取り出し、その値を検索値として使ってもいいですね)
 3.もしなければ 先頭が都道府県ではなかった(つまり市町村だった)ということですから、それを
   総務省の市町村リストで検索。
 4.ヒットしたら、それを都道府県名とする。

 ただ、この方法(市町村名を与えて都道府県名を取得)は、正確な結果が得られない場合もあります。
 総務省のリストの市町村列で重複の削除を行いますと 80行ほど削除されます。
 つまり、同名の市町村があるということで、その場合、どの都道府県なのか、だれにもわからないですね。
 (その下の弁天通りとか仲町といったものを組み合わせると、あるいは、特定できるかもしれませんが、
 そうしても同名ということは可能性としてはありえますし、それように、さらにもっと細かなリストを入手する必要もありますね)

 ★お勧めは、必ず都道府県を入れておく。ないものは、追加してリストにしておく ということなのではないですか?

 ★あるいは、先頭が都道府県でなかったものは抽出がおかしくなっているのでしょうから
  そのおかしくなっている状態を条件付書式でチェックして色をつけ、色がついたところだけを
  で作業でメンテするとか。

 ●現行、都道府県があればOKということで、それは、紹介URLを参考にして作ったということですが
  その(今使っている)式をアップすることも、皆さんに考えていただく参考になると思います。

(β) 2016/01/30(土) 13:37


 いろいろコメントしましたが、やはり、難しいですねぇ。自動分解は。
 参照されたトピでも回答者がふれておられましたけど、市町村(対象にしておられるのは 区、市、郡 のようですが)
 の名前の中に 市 や 郡 という文字を持ったものが実際にありますので。

 まぁ、本トピは、都道府県の部分がテーマですから、それに絞りますと、仮に 区、市、郡 が 正しくとりだされたとして
 それを、総務省のリストにぶつけて都道府県名を取得するという処理には少なくとも2つの難点があります。

 ・同名の市が存在し、それらに関してはどの都道府県か判断できない。
 ・郡 については、総務省のリストには含まれないので、別途、郡のリストも入手必要。

 (郡を、管理項目にすること自体、?? とも思いますが、それはテーマではないので触れません)

 ●提案です。もし、参照されたトピの数式で B列の都道府県をセットしているとすれば、式はださいですが

 B2 : =IF(ISERROR(FIND(RIGHT(IF(MID(A2,4,1)="県",LEFT(A2,4),LEFT(A2,3)),1),"都道府県")),"",IF(MID(A2,4,1)="県",LEFT(A2,4),LEFT(A2,3)))

 たとえば、こんな式にしておいて、先頭が都道府県でなければ空白にしておく。
 で、A列を選択して、条件付書式 数式が =B1=""  塗りつぶしで赤。

 こうして赤くなったA列のセルの住所に都道府県を追加しておく。
 つまり、このシートのA列は必ず都道府県から始まらなければいけないという決め事で運用管理していく。

 こうされてはいかがでしょうか。

(β) 2016/01/31(日) 18:51


郵便番号データには市区町村未満の情報があります。
http://www.post.japanpost.jp/zipcode/download.html
(mm) 2016/02/01(月) 12:53

こんにちは

色々な住所が有るので完全に対応するのは難しいですが、変換した後はフィルター駆使して
目チェックしてもらうとして、A列にデータが有るとして、

B1に
=IF(MID(A1,4,1)="県",LEFT(A1,4),IF(MID(A1,3,1)="県",LEFT(A1,3),IF(MID(A1,3,1)="都",LEFT(A1,3),IF(MID(A1,3,1)="府",LEFT(A1,3),""))))

C1に
=IF(ISERROR(FIND("区",E1))=FALSE,LEFT(E1,FIND("区",E1)),IF(ISERROR(FIND("野々市市",E1))=FALSE,"野々市市",IF(ISERROR(FIND("大和郡山市",E1))=FALSE,"大和郡山市",IF(ISERROR(FIND("四日市市",E1))=FALSE,"四日市市",IF(ISERROR(FIND("廿日市市",E1))=FALSE,"廿日市市",IF(ISERROR(FIND("郡山市",E1))=FALSE,"郡山市",IF(ISERROR(FIND("市原市",E1))=FALSE,"市原市",IF(ISERROR(FIND("郡上市",E1))=FALSE,"郡上市",IF(ISERROR(FIND("蒲郡市",E1))=FALSE,"蒲郡市",IF(ISERROR(FIND("小郡市",E1))=FALSE,"小郡市",IF(ISERROR(FIND("市川市",E1))=FALSE,"市川市",IF(ISERROR(FIND("郡",E1))=FALSE,LEFT(E1,FIND("郡",E1)),IF(ISERROR(FIND("市",E1))=FALSE,LEFT(E1,FIND("市",E1)),IF(ISERROR(FIND("町",E1))=FALSE,LEFT(E1,FIND("町",E1)),IF(ISERROR(FIND("村",E1))=FALSE,LEFT(E1,FIND("村",E1)),"")))))))))))))))

D1に
=SUBSTITUTE(SUBSTITUTE(A1,B1,"",1),C1,"",1)

とかで、試して下さい。

(ウッシ) 2016/02/01(月) 14:32


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.