<ACCESS> 住所から市区町村を抜き出したい

このQ&Aのポイント
  • <ACCESS>初心者が住所一覧のテーブルから市区町村を抽出する方法に苦戦中です。都道府県から始まる住所や市区町村から始まる住所、そして空白もあります。サブクエリを使用しましたが、うまくいかずに困っています。どのようにすれば市区町村を抜き出すことができるでしょうか。
  • <ACCESS>初心者のため、住所一覧のテーブルから市区町村を抜き出す方法について助言を求めます。住所には都道府県から始まるものや市区町村から始まるもの、そして空白も存在します。サブクエリを使用しているのですが、市区町村が抽出されません。どのようにすれば市区町村を正しく抜き出すことができるでしょうか。
  • <ACCESS>初心者ですが、住所一覧のテーブルから市区町村を取り出す方法についてお尋ねします。住所には都道府県から始まるものや市区町村から始まるもの、空白もあります。サブクエリを使用していますが、市区町村が抽出されず、住所がそのままコピーされてしまいます。市区町村を正確に抜き出す方法を教えていただけると助かります。
回答を見る
  • ベストアンサー

<ACCESS> 住所から市区町村を抜き出したい

Access初心者です。 住所一覧が書いてあるテーブルのデータから 市区町村を抜き出したく苦戦しております。 住所のデータは 都道府県から始まっているものから 市区町村から始まっているもの また、空白もあります。 市区町村名の一覧テーブル(T_市区町村)は作りました。 サブクエリには 市区町村:(select [市区町村名] from T_市区町村 where [住所] like "%" &[市区町村名] & "%") と入力しました。 そのまま実行すると 特に市区町村が抽出されることもなく そのまま住所が転記されてしまいます。 どのようにしたら良いのでしょうか。 お力を貸していただけたら幸いです。 よろしくお願い致します。

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

  • ベストアンサー
  • bardfish
  • ベストアンサー率28% (5029/17765)
回答No.1

クエリはそこまで万能ではありません。 VBAで1件ずつIF分で判定して分割したり取り出したりして専用の作業用テーブルに書き出してからクエリで更新するのが良いかと・・・ わたしなら全部VBAで処理します。 自由書データの中には都道府県名が含まれていたり含まれていないものがあるんだったら、都道府県名をReplaceで長さゼロの文字列(Nullではない)に置き換えれば市区町村だけになります。 ※Access VBAにReplaceはないかもしれませんが、同様のことを実現できる関数があったと思います。たしかMid()とかLeft()と同じくくりだったかと・・・ ADOなどで自身のテーブルをオープンし、1レコード読み込み処理し、次のレコードを読むという行為をレコードがなくなるまで繰り返す単純なものです。 私は今そんな感じのことをVisualBasic .NETで行っています。 いちいちコードを書かなくてはならないので大変ですが、汎用性が高いのでいろいろ便利です。 AccessはライセンスとかランタイムがややこしいのでフリーのSQL Serverを使うのもいいかもしれませんね。 Accessにリンクテーブルとしてバインドしてもいいです。そうすればmdbファイル(accdbファイル)の2GBの壁(32bit版?)もなくなります。データベースの最適化も必要なくなります。

sakaayuri
質問者

補足

ご回答ありがとうございます。 サブクエリに 都道府県:(select [都道府県名] from T_都道府県 where [住所] like [都道府県名] & "*") で都道府県の抜き出しができたので 市区町村も同じ要領でできると思っていました。 そういうわけにはいかないのですね、、、 AccessのサブクエリにはReplaceがあったので VBAにあるかどうか調べてみます。 ありがとうございます。

関連するQ&A

  • 【Access】住所を分割して抽出したい

    Accessで住所から都道府県と市区町村を抽出 はじめまして、Access初心者です。 右も左もわかっていないので 質問がおかしかったら申し訳ございません。 Accessのクエリを使って 住所録テーブルのデータにある住所から 都道府県、市区町村、それ以降 で分けて表示したいと思っています。 元のデータは、都道府県名が入っていないものや、都道府県名から始まっていない物、そもそも入力されていないものもあります。 都道府県一覧のテーブル(テーブル名: T_都道府県)と 市区町村一覧のテーブル(テーブル名: T_市区町村) は準備しました。 色々調べたのですが、Access不慣れな為 正しい式が書けておりません。 現在はサブクエリに 都道府県:(select[都道府県名] from T_都道府県 where [住所] like [都道府県名]&"*") 市区町村:(select[市区町村名] from T_市区町村 where [住所] like "*"& [市区町村名]&"*") それ以降:Replace (Nz([住所]," "),Nz([都道府県]," "),Nz([市区町村]," ")," ") と入力して実行したら このサブクエリでは1つのレコードしか返せません。 のエラーが出てしまいました。 (ですよね、、、) 都道府県と市区町村のテーブルを利用して どう直せば、うまく表示ができるのか わかる方教えていただけると幸いです。 どうか、よろしくお願いいたします。

  • Accessで住所分割 並び順で問題?

    Accessで住所を4項目(都道府県・市区町村・町域・その他)に 分割しようとしていますが、市区町村の分割がうまくいきません。 並び順に問題がある気がしているのですが ご教授いただけると助かります。 ■マスタ登録状況■■■■■■■■■■■■■■■■■■■ ※日本郵政HPから郵便番号一覧をダウンロードし以下を用意 ○都道府県一覧 都道府県 --------- 東京都 神奈川県 ○市区町村一覧 ※市区町村が(以下にない場合)などのデータは削除済 都道府県 市区町村 ----------------------- 神奈川県 横浜市金沢区 神奈川県 横浜市 ○市区町村一覧 ※町域が(以下にない場合)などのデータは削除済 都道府県 市区町村   町域 ---------------------------------------- 神奈川県 横浜市金沢区 福浦 神奈川県 横浜市金沢区 平潟町 神奈川県 横浜市    中区新山下 ■処理フロー■■■■■■■■■■■■■■■■■■■ 【実行前】住所一覧 ワーク          都道府県 市区町村 町域 ---------------------------------------------------- 神奈川県横浜市金沢区福浦*-*-* (1)都道府県分割クエリ実行 ・都道府県をセット ・ワークから都道府県を削除 【クエリ(1)後】住所一覧 ワーク          都道府県 市区町村 町域 ---------------------------------------------------- 横浜市金沢区福浦*-*-*   神奈川県 (2)市区町村分割クエリ実行 ・市区町村をセット ・ワークから市区町村を削除 【クエリ(2)後】住所一覧 ワーク          都道府県 市区町村 町域 ---------------------------------------------------- 福浦*-*-*         神奈川県 横浜市金沢区 (3)町域分割クエリ実行 ・町域をセット ・ワークから町域を削除 【クエリ(3)後】住所一覧 ワーク          都道府県 市区町村 町域 ---------------------------------------------------- *-*-*         神奈川県 横浜市金沢区 福浦 !!!!!クエリ(2)市区町村分割で困っています!!!!! ■クエリ実行結果■■■■■■■■■■■■■■■■■■■ 欲しい結果↓ ワーク          都道府県 市区町村 町域 ---------------------------------------------------- 福浦*-*-*         神奈川県 横浜市金沢区 現状↓ ワーク          都道府県 市区町村 町域 ---------------------------------------------------- 金沢区福浦*-*-*         神奈川県 横浜市 ■クエリSQL■■■■■■■■■■■■■■■■■■■ クエリ(2)市区町村分割(1) ※市区町村をセット UPDATE 住所一覧, 市区町村一覧 SET 住所一覧.市区町村 = 市区町村一覧.市区町村名 WHERE (((住所一覧.ワーク) Like 市区町村一覧.市区町村 & "*") AND ((住所一覧.都道府県)=市区町村一覧.都道府県名)); クエリ(2)市区町村分割(2) ※ワークから市区町村を削除 UPDATE 住所一覧 SET 住所一覧.ワーク = Replace(住所一覧.ワーク,住所一覧.市区町村,"") WHERE (((住所一覧.市区町村) Is Not Null)); 市区町村一覧の並び順を降順にしたり、 間に選択クエリをはさんでLen(市区町村)で降順にしたり、 「横浜市金沢区」が「横浜市」より先に来るようにしていますが うまくいきません。 長文ですがどうぞよろしくお願い致します。

  • Accessフォーム

    Access初心者です。 Accessのフォーム上で、 [都道府県]のコンボボックスで東京都を選んだ場合、 [市区町村]のコンボボックスには「東京都」の市区町村名が選択できるようにしました。 フォームでの入力はきちんと出来るのですが、新しいレコードに入力すると、 前のレコードに入力した項目が消えてしまいます。 (テーブル上には、入力した情報が残っています) 色々試してみましたが、どうしても出来ません。 いったいどうしたらよいのでしょうか。ほとほと困っています。 どうかご教示ください。お願いいたします。

  • 市区町村別の件数をカウントするビュー

    市区町村別の件数をカウントするビューを作りたいのですが、 上手くいきません。 まず、メインの住所が登録されているテーブル(user_table)には 住所とは別に、市区町村名(city)が登録されています。 次にSQL文で create view vUser_table as select city, (select count(*) from user_table where city=x.city) as count from user_table as x と打って、ビューを作成したのですが、 世田谷区 36 中野区 12 足立区 24 世田谷区 36 ・・・・ のように、同じ市区町村が何度もでてきてしまいます。 (件数は同じ) どうすればよいのでしょうか? ご教授ください。

    • ベストアンサー
    • MySQL
  • ファイルメーカーで住所内の市区町村を返す方法

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

  • アクセスでのデータ操作で・・

    アクセスのデータ操作での質問です。住所テーブルに都道府県列と市区町村列があります。いずれもテキスト型です。その2列を結合して住所列というものを表示させることはできるのでしょうか?

  • Access2003を使いバラバラのCSVをひとつにまとめる

    5種類位のCSVデータをひとつの統一したテーブルにまとめたいと 考えています。以下、その例です。 Aデータ:郵便番号、都道府県、市区町村、残り住所、苗字、名前、電話番号 Bデータ郵便番号、住所、氏名、電話番号市外局番、市内局番、局番 これを 統一データ:郵便番号、都道府県、市区町村、残り住所、苗字、名前、電話番号 というデータにまとめたいと思います。 AとBのデータは日々増えていくので増えた分をAccessを使って統合し 別の用途に利用するつもりです。ですので毎日作業は発生します。 このような場合のベストなテーブル構成やクエリー等をアドバイスいただけ ますでしょうか?

  • 住所の分割方法

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

  • 市区町村の表示と件数

    東京都 足立区(~件) 北区(~件) 墨田区(~件)………  神奈川県 横浜市(~件) 川崎市(~件)…………  上記のような形で、データベースからデータを取得して、エリアの横に件数を表示させるPHPを作成したのですが表示速度が遅すぎて困っています。ソースは以下です。1番目のテーブルで、指定した都道府県の市区町村データを取得してから、2番目のテーブルでそれに合致する物件データの件数を取得するというものです。表示速度を改善する方法はありますでしょうか? //ソース $sql_area = "SELECT * FROM エリアのテーブル WHERE area = '東京都'"; $result_area = mysql_query($sql_area); for($i = 0; $i < mysql_num_rows($result_area); $i++){ $arr_area = mysql_fetch_array($result_area); $sql_cnt = "SELECT * FROM 全物件のデータ WHERE 市区町村 = {$arr_area[市区町村]}; $result_cnt  = mysql_query($sql_cnt); $category_cnt = mysql_num_rows($result_cnt); echo $arr_area[区名]({$category_cnt}件); }

    • ベストアンサー
    • PHP
  • 現在管理している顧客住所録の郵便番号と市区町村名を最新のものにする必要

    現在管理している顧客住所録の郵便番号と市区町村名を最新のものにする必要があります。 合併などで郵便番号や市区町村名が変わっている地域の情報を最新のものにする方法を教えてください。 ※2002年1月から顧客住所を管理しています。 現在持っている住所録を読み込ませて、自動で最新の住所に変換できるツールはありませんでしょうか? 有料、無料問いません。 そういったツールがなければ、郵便番号もしくは市区町村地域名が変わった地域の一覧表はないでしょうか? よろしくお願いします。

専門家に質問してみよう