none
住所から郵便番号の一括変換 RRS feed

  • 質問

  • Accessで、住所入力がされているデータから郵便番号を一括で変換したいです。

    いろいろネットを検索して見ましたが、エクセルでの変換は紹介されているのですが、アクセスだは見つけることができませんでした。

    「住所から郵便番号の一括変換」VBAのご紹介を、宜しくお願いします。

    2018年8月2日 5:59

すべての返信

  • そのエクセルの変換が載っているページはどこでしょうか? 基本的には変換部分は同じようにして処理できるはずです。

    ★良い回答には質問者は回答済みマークを、閲覧者は投票を!

    2018年8月2日 8:37
    モデレータ
  • 郵政省のHPより全国一括データ(加工バージョン)を利用するくらいしか

    同じ町域で複数の郵便番号があるものがあるので完全にいきなりできるなんてのは

    不可能だと思います。

    1101 60 600002 ホッカイドウ サッポロシチュウオウク キタ2ジョウニシ 北海道 札幌市中央区 北二条西
    1101 64 640822 ホッカイドウ サッポロシチュウオウク キタ2ジョウニシ 北海道 札幌市中央区 北二条西

    DLしてをテーブルにしてインポートした後、必要な地域(ケースによる)し

    オリジナルの住所形式と同じように加工して、データからlike演算子で、郵便番号Hit

    countで1のものは郵便番号に変換して、あとは手作業(運?電話をかけて確認しましょうw)かな?

    VBAは詳しいでしょうからこんな感じで組めばいいのでは?<ド素人の経験ですw




    2018年8月2日 10:55
  •  郵便番号住所は、都道府県から始まって丁目・番地まで入るものや入らないもの、同名地域も結構あって、一致データの加工でFor40からマイナスステップでLikeさせても、全国郵便番号データが13万件、時間がかかります。
    クエリーを使った素晴らしVBAを組んでおられる方がおられるのではと思っているのですが残念です。
    お返事ありがとうございました。


    2018年8月3日 2:37
  • データ処理になりますから、住所データと郵便番号データをデータベースに入れ、それをストアドプロシージャでデータベース内で処理するのが良さそうですね。ただ、Accessの場合、ストアドプロシージャには1つのSQLステートメントしか書けないようです。私はAccessのストアドプロシージャには詳しくないので違っていたらごめんなさい。

    (参考)
    CREATE PROCEDURE ステートメント (Microsoft Access SQL)
    https://msdn.microsoft.com/ja-jp/library/office/ff845861.aspx

    よって、Accessでは厳しそうですね。例えばSQL Serverなどであれば、郵便番号データを都道府県、市町村といった感じでカラムを分けてテーブルに入れておけば、likeを使うのは大抵の場合はそれ以下の部分のみになりますから、速度的な向上は見込めると思います。


    ★良い回答には質問者は回答済みマークを、閲覧者は投票を!

    2018年8月3日 3:07
    モデレータ
  • 郵政省のHPより全国のデータについて、私分析したことありました。同じように利用できなかと!

    郵政省の全国郵便番号データは、たしかに約13万件あるのですが分析すると、たとえば、”一行に1~13番地”とか”区以下に

    掲載されてない場合”など圧縮されて入っています。またこのような単純パターンのみならず、こんなデータもあります。

    「7201,"92181","9218046","イシカワケン","カナザワシ","オオクワマチ(ア、イ、イ、ウ、ウエノ、オ、オオツ、カネツキヤマ、カミカワラ、カミネコシタ、","石川県","金沢市","大桑町(ア、イ、ヰ、ウ、上野、ヲ、オ乙、鐘搗山、上川原、上猫下、",1,0,0,0,0,0」

    単純パターンのものをプログラムで分析しレコードを生成すると約17万件ぐらいになりました。

    それ以外にパターンに当てはまらないものは個々にロジックを付け加えるか手作業で入力することになり、かなり

    大変になると思います。

    住所一覧の販売しているところを見てみると、データ量的にたしか70万件ぐらいあった気がしました。

    というわけで、郵政省のcsvデータ利用はあきらめまたっていう経緯がありました.


    2018年8月16日 6:53