• ベストアンサー

住所から市町村JISコードを検出

エクセル2003を使用しています。 住所一覧を参照して市町村JISコードを返したいのですが可能でしょうか。 A列 大阪府大阪市○○区○○町1-1 高知県高知市○○11-1 愛知県海部郡○○町○○○○61   ・   ・   ・ と住所が並んでいます。 過去の質問やサイトを調べて都道府県を抽出することはできたのですが、 JISコードを参照するには市区町村部分まで引っ張り出さないといけないようです。 何か簡単にできるような計算式等、ありませんでしょうか。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.6

データは、地域の区分け、それも、都道府県に別けるのは面倒だから、せいぜい以下のような10ブロック別けぐらいで十分だと思います。 (北海道,東北地方,関東地方,中部地方,北陸・甲信越,東海,近畿地方,中国地方,四国地方,九州地方) 今回の使ったデータは、全部で、122,619行で、それを分散させれば、後は、どこを検索するかブロックを最初に決められれば、後はそんなに問題はないと思います。それを分散したら、1シート、1万数千件程度の検索です。そのデータのブック自体は別にし読み取り専用にしておき、そのブックのシートを、データベース関数やExcelのデータベース検索コマンド(フィルタオプション)でできるかと思います。 この場合、元のデータ自体を加工するという考えは、あまりしないほうがよいのではないかと思います。また入力データを切り分けするなら、その元のデータを考慮しないといけないはずです。 なお、JISコードは、集計すると2,520個で、市町村データは、80,813件でした。ただし、それは、「他に掲載がない場合」や「同名」が存在しているなどの理由からで、12万件自体は変わらないはずです。 個人的には、やはり、専用のデータベースの方が、現在のデータのままでは検索の効率はよいと思っています。 今回、私の使用したデータは以下の[ZIPJIS]というK3(桐)ファイルです。 (内容の説明では、2005年6月20日までの変更に対応。) http://kitagawa.tv/zipjis/zipjis.htm

参考URL:
http://kitagawa.tv/zipjis/zipjis.htm
puchishiyo
質問者

お礼

お礼が遅くなり申し訳ございません。 やはり簡単にはいかないようですね・・・ あればよく使われそうな処理なので、簡単な方法があるかと思いましたが・・・ VBAくらい勉強しようと思います。 貼っていただいたURLも、参考にさせていただきます。 ご回答ありがとうございました。

その他の回答 (5)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.5

>JISコードを参照するには市区町村部分まで引っ張り出さないといけないようです。 住所の完全な分割は #2 の chie65536 さんがコメントされておりますとおり、複雑な例外処理を必要とするため、非常に難しいと思います。 実は以前、住所を分割するVBAユーザー定義関数を作成したことがあります。「市区町村部分の抜き出しさえできれば、JIS コードを参照することができる」ということであれば、アップしてみます。 ただ、長文マクロですし、精度も保証できない、、、というお粗末なものですから、ご希望があれば、、ということにさせて下さい。

puchishiyo
質問者

お礼

お礼が遅くなり申し訳ありません。 きちんとしたものを作るのはかなり複雑なようですね。。 何か簡単な方法があればと思ったのですが・・・ とりあえず、VBAの勉強をしてみようかと思います。 また、宜しくお願い致します。 ご回答、ありがとうございました。

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

1.都道府県 47個しかないので、都道府県(漢字)と2桁コードのエクセルシートテーブルを自分で作るとしても簡単です。 都道府県漢字をエクセルの住所データより抜き出せば (ただし要スキル)、VLOOKUP関数で都道府県コード化は可能です。これは済んだようですね。 問題は原住所データに都道府県漢字が入っていたり入ってなかったりするとお手上げです。 2.全国市区町村名 これは数が3千6百以上(合併で3000あまりに減少か)あって、自分で電子データを作るとするとまあ不可能の部類でしょう。 具体的な内容はJISコードブックが(規格協会で)市販されていますが、平成の市区町村大合併の最中で改訂版が現状に追いついていない恐れがあります。 電子化されたデータがフリーで公開されているかどうか知りませんが(私は見たことがない)、郵便番号データ(十数万件?)ならあるので、そこから市区町村漢字データを作ることは可能ですが(ただしプログラムをつくれることが必要)、市区町村コードは自分で入れないといけないので不可能の部類でしょう。 3.コード化 もし都道府県漢字+市区町村漢字+市区町村JISコードデータ(5桁)があれば、コード化できるか。 まず第1弾として、エクセルの関数などで市区町村のレベルまでの漢字が抜き出せるかということですが。 関数では難しいでしょう。FIND関数のような、「含む」を検知できるものは、(VLOOKUP関数のようには)対象を変えて実行してくれないので、町字番地部分が邪魔です。 この段階になると「表引き」プログラム(VBA)の作成技量かデータベースへインポートして、SQLを使える環境が必要でしょう。 「MSアクセス」やSQLを使えるデータベース言語の利用です。 その場合「含む」を検知する、LIKE*やINSTR関数などを使うことになるでしょう。 プログラム作成では3000千件、毎回総なめ判別すると、処理時間が相当かかると思われるので、市区町村のテーブル側のデータの「構造化」の技量が必要でしょう。構造化とは毎回(エクセルの毎行)比較判別する回数を劇的に減らす工夫・仕組みのことです。

puchishiyo
質問者

お礼

お礼が遅くなり申し訳ございません。 詳しく検討していただきありがとうございます。 エクセルは関数こそそこそこ使える程度の素人ですので、なかなか難しそうですが・・・ でも勉強してみまようと思います。 ご回答ありがとうございました!

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

一応、Excelで試してみました。 今、公開されている新しいテキストファイルを、mdb 化して、VBAコードを書いてみましたが、結果としては、とても実用にはなりませんでした。 レコードセットを開いて検索しているのですが、約14Mbyte もある中から、Like 検索しJISコードは出ることは出ますが、1つの検索でも、数10秒、しばらく考えているようです。これでは、Excelからの実用化は、今の段階では、ちょっと無理みたいです。 少なくとも、mdbでは、うまくいかないような気がします。テキストファイルも、昔やったことがありますが、実用レベルではありませんでした。他にも似たような方法はありますが、おそらく、同じ発想の中からでは、成功しませんね。他の方法がたぶんあるはずですが、もう、Excelの範疇ではなくなります。 やはり、現状では、Access から開いてAccessのクエリから検索させるのとでは、雲泥の違いがあるようです。 一応、ご報告まで。

puchishiyo
質問者

お礼

わざわざ試していただいてありがとうございました!! お礼が遅くなり申し訳ございません。 なるほど、Accessを使って検索するんですか。。 Accessはほとんど使ったことがないので、勉強してみようと思います。 ありがとうざいました。

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.2

No.1さんへ。 質問者さんが聞いているのは「郵便番号」ではなく「JIS市町村コード」の事ですが、ATOKは「JIS市町村コード」をサポートしていません。 ※JIS市町村コード=2桁の県コード、3桁の地域コードで構成された5桁コード 質問者さんへ。 残念ながら簡単には行きません。 VBマクロでコードを書いて、一覧から検索する事になります。 しかも、入力された住所の書き方によって、かなりの例外処理を必要とします。 例えば「町」や「村」を省略して「○○町1234番地」と書かずに「○○1234番地」と書かれていたり「○○県○○郡○○町字△△3番」と書くべきを「○○県○○郡○○△△3番」と書いたり。 他にも、単純には行かない事例が山ほどあります。 JIS市町村コード一覧を住所でソートしてみると判りますが、検索の順番を間違うと嘘のコードになってしまう場合もあります。 経験から言えば、ExcelよりAccessで作った方が良さそうです。

puchishiyo
質問者

お礼

お礼が遅くなり申し訳ありません。 やはり簡単にはできませんか・・・(>_<。) Accessやマクロはほとんど使ったことがないので、 何か関数みたいなものがないかと思ったのですが・・・・ ご回答、ありがとうございました!

  • mabomk
  • ベストアンサー率40% (1414/3521)
回答No.1

住所から郵便番号への変換は 「ATOK」環境では出来るようです.ジャストシステムのFAQをご参照下さい。 「AMET」言う機能らしいです。 私は必要ないと思ったのでインストールしていませんけど。所謂逆引きですよね。 マイクロソフトの漢字変換は使っていないので分かりません。 少なからず「お▲●さん」なので(笑)

参考URL:
http://faq.justsystem.co.jp/faq/1003/app/jsfaq.jsp?26363+0215
puchishiyo
質問者

お礼

早々のご回答ありあがとうございました。 ただ郵便番号ではなく「市区町村JISコード」という5桁のものがありまして、それを参照させたいのです。 データは一覧で取得しているので、市区町村部分まで抜き出しさえできれば可能かと思うのですが・・・ ATOKには便利な機能があるのですね!こちらIME使用です。。(^_^;)

関連するQ&A

  • ファイルメーカーで住所内の市区町村を返す方法

    いつもお世話になります。 住所フィールドに「○○県△△市××町1-1-1」というデータがあるとします。 これを基本として 住所1(都道府県):○○県 住所2(市区町村郡):△△市 と、表示したいのですが、うまくできず困っています。 Position使い試しましたが、市しか取得できない状態です。 お分かりの方がいらっしゃいましたら、ご教示くださいませ。 よろしくお願いします。

  • 住所を市郡区町村名で分けたい

    エクセル2000を使用しての住所入力です。 住所を都道府県・市郡区町村名・以降番地で分けたいのです。 例えば 東京都港区赤坂なら 東京都 港区 赤坂 愛知県名古屋市中区栄なら 愛知県 名古屋市中区 栄 愛知県豊田市トヨタ町なら 愛知県 豊田市 トヨタ町 長野県北佐久郡軽井沢町軽井沢なら 長野県 北佐久郡軽井沢町 軽井沢 というふうにです。 都道府県を過去の質問を参考にして、 関数を使用して分けることはできました。 その後はどのようにしたらいいでしょうか。 どなたか教えて下さい。

  • JIS地域コード

    都道府県と市町村のJIS地域コードが知りたいのですが、一覧表か検索サイトないでしょうか?

  • 住所の一部の取り出しについて

    現在、accessで会社名、住所、telなどのデータが入っているテーブル「T_顧客」から、選択クエリ「Q_顧客」を作成しています。 選択クエリ「Q_顧客」に「地区」という列を設け、住所から市や郡を取り出すようにしています。 Left([住所],IIf(InStr([住所],"市") = 0,InStr([住所],"郡"),InStr([住所],"市"))) 上記の式では、   住所         地区 大阪府吹田市○○町 → 吹田市 大阪府豊中市○○町 → 豊中市 大阪府大阪市旭区○○町 →大阪府大阪市 大阪府三島郡    → 三島郡 というように抽出されています。 さらに条件を追加して、 「大阪府大阪市の場合は区まで取り出す」 「大阪府以外の場合は府又は県を取り出す」 という構文を追加したいのですが、どうしたらよいでしょうか? イメージとしては   住所         地区 大阪府吹田市○○町 → 吹田市 大阪府豊中市○○町 → 豊中市 大阪府大阪市旭区○○町 →大阪府大阪市旭区 大阪府三島郡    → 三島郡 京都府京都市    → 京都府 和歌山県和歌山市  → 和歌山県 このような感じです。

  • TOEFL申し込みの際の住所の書き方

    まったく初歩的な質問で申し訳ないのですが、TOEFLオンライン申し込みの住所の書き方が分かりません。 まず、住所1というのがあって、その次に住所2があるのですがどのように振り分けて書けばいいのでしょうか? そのあとに、市区町村を書く欄があり、その後、都道府県と国を選ぶところがあるので、市区町村・都道府県・国は住所欄に書く必要はないですよね。 具体的には 大阪府大阪市○○区△△町1□□ハイツ2号室 という住所を書く場合、住所1と住所2にどのように分けて書けばいいのでしょうか? どなたか、ご解答の程よろしくお願いします。

  • 住所

    住所で○○県△△市□□区××町1-1-1とすると □□区は市町村か町名のどちらに分類されますか? 市町村だと△△市□□区 町名だと□□区××町1-1-1 になると思いますが

  • 困っています

    親類がなくなって、急きょ愛知県の海部郡七宝町に車でいくことになりましたが、初めてなので道路が良く分かりません。大阪府茨木市からだとどういった経路を通ればいいのでしょうか。分からないなりに調べると、東名阪高速道路の名古屋西で降りたら一番近いように思うのですが。高速料金もできれば教えてください。

  • エクセルで住所に関連づけてコードを振りたい

    こんにちは。 以前、エクセルで作成した住所データに、今回新たに住所コードを反映させたいのですが、やり方がわかりません。 例えば、A町1丁目には012、B 町2丁目には321と言う具合に、住所となりのセルに任意のコードを付けたいのですが、可能でしょうか? また住所セルには、C県B郡A町1丁目という風に県や郡まで入力されているセルもあり難儀しております。 住所データは全部で5000件ほどあります。 どなたか詳しいかたお知恵をお貸しください。 (当方、エクセル初心者です)

  • 市町村合併 地名と住所

    市町村合併についてですが、私の住む町でも数年前に隣の市に編入合併されました。 その際に住所が○○郡△△町××から○○市××になると思っていたものの○○市△△町××と旧町の名前が残りました。 宿場町なので親しんだ名前が残ってよかったと言う住人も居ますが、 これでは、せっかく合併したのに何だか自分たちだけ旧市域の人たちと区別されてるようで不満に思います。 せっかく行政も高速道路の開通と合わせて、一体的に発展しようと取り組んでいるのにこのような状況では将来にわたって、「余計な壁」が生まれないか心配です。 合併した街に住んでいる方に伺いたいのですが、住所から今までの街の名前が消えた方はどういうお気持ちでしょうか。 また、残った方はどういうお気持ちでしょうか。

  • 市町村合併後の新住所(埼玉県)

    埼玉県大里郡花園町と言う地名は、市町村合併後どう変わりましたか? わかる方、教えてください。

専門家に質問してみよう