• ベストアンサー

住所から市町村名を取り出す

access2003 Win-XP 住所禄の住所の項目があります。その住所から市町村名を取り出す。 住所           市町村名 ○○県XX市      XX市 ○○県△△市    △△市 □□県**市    **市 こんな感じで、クエリでできるでしょうか? 取り出す市町村名は、特定の限定した町村で、それ以外は無しでいいです。

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

  • ベストアンサー
回答No.5

途中から失礼します。 特定の5市町村なら、Switch関数でいいかと。 例えば、 > 住所           市町村名 > ○○県XX市      XX市 > ○○県△△市    △△市 > □□県**市    **市 で、それ以外は、その他なら、クエリのフィールドに下記の式を設定すればいいでしょう。 市町村名: Switch([住所]="○○県XX市","XX市",[住所]="○○県△△市","△△市",[住所]="□□県**市","**市",True,"その他") 市町村以降の住所(地番等)も入力されているなら、Like演算子を使って、 市町村名: Switch([住所] Like "○○県XX市*","XX市",・・・・) 市区町村がもっと多かったり、抽出対象の変更がたびたびあるなら、 下記のような変換テーブルを作成して、 住所変換 元住所    市町村名 ----------------------- ○○県XX市 XX市 ○○県△△市 △△市 □□県**市 **市 ・・・・・  ・・・ クエリのフィールドに下記のように設定します。 市町村名: Nz(DLookup("市町村名","住所変換","'" & [住所] & "' Like [元住所] & '*'"),"その他")

kapatool
質問者

お礼

ありがとうございました。 思い通りにできました。感謝します。

その他の回答 (4)

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.4

実験環境でうまく動かなかったのでしょうか。 それとも、そちらの本番環境でのお話? そちらで作成した SQL文とエラーの内容とテーブルのフィールド名も載せてください。 東区・北区はある意味で良い(悪い)例でした。 台東区・江東区・港北区・・・などもヒットしてしまいますね。。すみません。 実際の5市町村名は何かも教えてもらえますか。 その内容によっては最初のZipConv関数を利用せざるを得ないかもしれない。 Access2003なら多分動くのでは?その場合は クエリのフィールド欄に 市町村:zipconv([住所],zcCty1) として、試してみてください。 うまく行ったら、抽出条件欄にその市町村名です。 番地表示以下は適当に存在しない値にして実際にどのような住所なのか 二三例も欲しいような気もします。 とりあえず、ここまで。

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.3

5市区町村だけが対象でしたら地道にやってもいいかな。 下記は北区と東区を対象にした場合です。 参考にして五市区町村を加えてください。 ユニオンクエリですのでクエリをデザインビューではなく、SQLビューで開いて編集をします。 SELECT 住所,"北区"as 市区町村 FROM 住所録 WHERE 住所 Like '*北区*' union all SELECT 住所,"東区"as 市区町村 FROM 住所録 WHERE 住所 Like '*東区*' union all SELECT 住所, "その他" AS 市区町村 FROM 住所録 WHERE Not 住所 Like '*東区*' Or 住所 Like '*北区*'; ※同名の市区町村が他都道府県にもある場合は×です。 ご参考までに。

kapatool
質問者

お礼

ありがとうございます。 SELECT 住所, "その他" AS 市区町村 FROM 住所録 WHERE Not 住所 Like '*東区*' Or 住所 Like '*北区*'; の部分ですが、うまくできません。 構文を今一度教えてください。

  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.2

住所には番地は入力されていないのでしょうか それなら簡単です。("県"のみが前提) --- select 住所 ,mid([住所], InStr([住所], "県") + 1) as 市町村名 from 住所禄

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

三重県四日市市や千葉県市川市、長野県大町市などがありますので 『市町村』を頼りには抽出できない場合があります。 特定の市町村が少なければ、クエリの抽出条件に Like *○○市* like *▽*市 などと連ねて行けば出来るかも。 市町村名だけを抜き出す場合は冒頭の例が有りますので難しいと思います。 YU-TANG さんが解説されている、ZipConv 関数が使えるかと思います。 http://www.f3.dion.ne.jp/~element/msaccess/AcTipsZipConv.html

kapatool
質問者

お礼

ありがとうございます。 住所の中に特定の市町村(5町村、それ以外は「他」)という感じで集計することが目的です。 Iff関数などの利用を考えたのですが

関連するQ&A

  • 住所から市町村名などを切り出す

    県名から始まったり、県は省略されて市名からはじまったりと、バラバラの住所データから、都道府県名が何で市町村名は何で区は何で残りの住所は何で─というようなものを取り出したいのですが、うまい方法はありませんでしょうか。 東京の場合は2番目に区が来るとか、町はどの階層に入れるのかとか、そういった細かい事は考えなくても良い内容です。 下記のプログラムでは駄目でした。切り出せない上に文字化けします。どうしてでしょう。(東京を別にしているのは京都対策です。) if ($juusho=~tr/^(東京都)//d) {$todoufuken=$1;} elsif($juusho=~tr/^(.+?[県府道])//d) {$todoufuken=$1;}

  • 市町村境に建っている市町村名の標識

    A市とB町が合併します。新しい市の名前は「A市」です。 旧A市と旧B町の境に市町村名の標識はいらなくなりますが、この標識はどの時点で撤去するのでしょうか。 また、旧B町と隣のC村との境に建っている市町村名の標識を、「B町」から「A市」に替えるのはどの時点なんでしょうか。 私の住んでいるところは市町村合併があまりないのでよくわかりません。よろしくお願いします。

  • IME2007で市町村名を変換できなくなって困ってます。

    最近、パソコンを買い替えてMicrosoft IME2007になりました。 それで困っていることがあります。 仕事柄、住所を打つことが多いのですが、従来の辞書では変換できていた市町村名が、変換できなくなりました。 どういうことかというと、たとえば、 「おぶせまち」→「小布施町」 「たかやまむら」→「高山村」 のように、「まち」「むら」の部分も一体で変換できていたのが、 「おぶせまち」→「小布施」「町」 「たかやまむら」→「高山」「村」 のように区切られるようになってしまったんです。(「市」や「郡」は問題ないのですが。) 人名・地名モードに変えてもダメですし、最近の市町村合併で誕生した新しい町というわけでもありません。 「町」や「村」を一体で変換することで、誤変換を防いでいたので困っています。 きそむら→起訴村(木祖村)、あちむら→あち村(阿智村)など、今までのように一体で変換できたらありえないミスが出るようになりました。 以前と同じように一体で変換する方法はないのでしょうか?

  • Excelで、文字列を含むセルの検索をしたい

    Excelで、文字列を含むセルの検索をしたいと思います。 列Aには、探したい文字列(市町村名)が800行入っています。 (1行目)○○市 (2行目)△△町 (3行目)□□□村 ・・・以下続く・・・ 列Bには、検索対象となる文字列(住所)が7000行入っています。 (1行目)XX県XX市XX-XX-XX (2行目)XX県○○市XXXXXX-XXX-X (3行目)XX府XXX郡□□□村XXX ・・・以下続く・・・ このとき、 「列Aにある文字列(市町村名)を含む列B(住所)のセル」を検索したいのです。 (上記の例の場合は2行目・3行目がヒット。) シートや列は追加してかまいません。 件数が多いため、どのように探すと効率的か見当がつきません。どなたかよい知恵をお貸しください。よろしくお願いします!

  • エクセルで住所を違うセルに分けたいのですが・・・

    エクセル2000で住所禄を作ってあるのですが、そこから市町村の前の部分で 分けたいのですが可能でしょうか? ○○郡 △△町 ・・・・・ □□郡 ××村 ・・・・・     ◆◆市 ・・・・・ この例で言うと現在一つのセルにすべて入っている内容を郡と町、村、市と・・・・の3つの部分をそれぞれセルに分けたいのです。 ◆◆市が郡の列に入っても構いません。 たくさんあるデータをソートをかけて拠出していきたい為、何とかして分けられないものかと思案しています。 可能であれば方法を教えて下さい。

  • データ内(同じセル内)の住所を分けて抽出したい

    ACCESSのテーブルデータで、 1つの項目(列)に、 ●●県 ●●●市 南2-3-12 という住所項目があるとします(市のところは村、郡となっているケースもあり)。 これをクエリーで抽出する際に、 ●●県 ●●●市 までしか抽出しないようにすることは可能でしょうか? 市以降の南2-3-12は抽出しない。 (県、市、南の間は半角スペースがそれぞれある) またそれとは別途で、 それぞれにセルを分けることはできるでしょうか? → ●●県 ●●●市 南2-3-12  の上記それぞれを別々の項目/セルに分割する もしアクセスで難しいようであればエクセルでもOK。 また上記とは別途で、半角スペースがない(文字が連続している)場合にも 出来る方法はあるのでしょうか。 ※会社のデータ保存がいけてなく、県、市区郡、以降~と すべて住所内容が1つのセルにおさまっており、細かい地域分析ができない為。

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

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

  • 郵便物は旧住所で差し出しても届く?

    町村が合併して新しい名前の市になったり、町村が隣の市に吸収(編入)されたりという動きが活発化されてるみたいですが、そこで疑問に思ったのが、新しい市になってることを知らなかったり、いままで旧町名でずっと差し出しててそれに慣れてしまっていて消滅してしまった町の名前で宛名を書いて手紙を出した場合、その郵便物は宛名の相手に届くんでしょうか、それとも消滅してしまった市町村名では「無効」になってしまうんでしょうか? この僕の疑問について「…だと思う」といった回答でもいいんで教えて下さい。

  • 住所欄への「区」などの記入方法について

    各種の登録・応募用紙(民間・官庁問わず)で、住所を書く欄に 「   都道府県    市区町村      」 と欄に印刷してある場合、たとえば「神奈川県横浜市中区日本大通1番」という住所であれば、 (ア)「神奈川」→県に○→「横浜」→市に○→「中区日本大通1番」 (イ)「神奈川」→県に○→「横浜市中」→区に○→「日本大通1番」 のどちらが良いでしょう。何かの規則(JIS規格など)で決まっていますか。それとも世の中の習慣でどちらかに統一されていますか。なお、地方公共団体コードは、「横浜市」にも「横浜市中区」にも番号が振られています。 また、 「   都道府県    市郡区     町村      」 と印刷してある場合は、上の(ア)(イ)の判断に加えて、 (ウ)「日本大通」→町村を横線で消す→「1番」 (エ)「日本大通」→町村に○をつけない(何もしない)→「1番」 (オ)町村の欄に書かない→町村の右側に「日本大通1番」 のどれが良いでしょうか。 (a)長野県長野市伊勢町 (b)長野県長野市青木島町大塚 (c)長野県長野市稲葉 の場合、(a)では「伊勢」→町に○、(b)では「青木島」→町に○→「大塚」、(c)では「空欄」→町村に○をつけない→「稲葉」となるでしょうか。それとも、全部町村の右側(あるいは、左側)に書くのが良いでしょうか。

  • 住所を簡略に書きたい

    相手方の住所を簡略に書くなどして手間を省きたいです。 郵便番号は必ず必要ですよね。 これはとりあえず書きます。 絶対間違えないように確認した上でです。 これによって町村まで特定できると思いますので、 後は同姓同名の人がいないことがいないことがはっきりしている場合、市役所などの一つしかない場所などの場合は、それぞれ、名前、市役所と書けば届くと思いますが、いかがでしょうか。 よろしくおねがい致します。

専門家に質問してみよう