いけず言葉しりとり

たとえば、
〇〇県××市△△町3番19号という住所があったとします。
これを〇〇県××市△△町と3番19号に分けたいのです。
何千という住所をこのように分けるにはどのような式で可能でしょうか。
ExcelもAccessも使う機会が多いので、両方教えてほしいです。

A 回答 (2件)

”町” で区切ればよいのでしょうが、”町”を含む市名や町名もあったりするうえに、町名の後ろの地名にも”町”の字を含むこともあるので、


ぶっちゃけ、一筋縄ではいかない作業です。
すげー面倒だぞ。

自分なら……
町名の後ろの地名にも ”町” の文字がある場合は超レアなケースなので別途手作業で処理するようにします。
で、
住所の文字列からSUBSTITUTE関数で ”町" の文字を消して、
 SUBSTITUTE(住所文字列,”町","")
消した後と消した前の文字列をLEN関数で文字数にして比較し、
 LEN(住所文字列)-LEN(SUBSTITUTE(住所文字列,”町",""))
その差の値を ”町” の文字の数として、その値を使ってもう一度SUBSTITUTE関数を使い、元の住所の最後の ”町” の文字を ”@” に置き換え、
 SUBSTITUTE(住所文字列,"町","@",LEN(住所文字列)-LEN(SUBSTITUTE(住所文字列,”町","")))
さらにその ”@” の文字が何番目になるのかをFIND関数やSEARCH関数で調べて区切る位置をしらべたうで
 FIND("@",SUBSTITUTE(住所文字列,"町","@",LEN(住所文字列)-LEN(SUBSTITUTE(住所文字列,”町",""))),1)
その結果を用いてLEFT関数とRIGHT関数を使って切り分けます。
……分かりにくいうえに面倒でしょ?

「だったら代わりに数式を作れよ」とおっしゃるでしょうが、ここは変わりに作業を依頼する場所ではなく、
自分で問題を解決できるようになるためのアドバイスをもらう場所です。
とりあえず、それっぽい数式は示しておきます。

そんなわけで、とりあえず試行錯誤して、そのうえで分からない点を質問しなおすと良いでしょう。

もちろん、超レアな例外に対しては後から全部手作業で処理することになります。
どんだけデータがあっても…1万件なら少ないほうでマジで楽…全件見直してください。

・・・

なお、マクロでもできますよ。
プログラムをちゃんと理解できるのであればそのほうが楽かもしれません。


・・・余談・・・
住所録などのデータベースと比較して、一致する住所に対して切り分ければ確実なんでしょうけどね。
自分はその手のデータベースを知りませんし、質問者さんのお手元にある住所が何年度のデータベースに対応している物なのかも分からないので、
「このデータベースと比較すれば楽ができるよ」とは言えないんです。
ごめんね。
    • good
    • 0

ExcelやAccessを使って、住所を分割することができます。



Excelでの方法:

分割したい住所を選択します。
「データ」タブから「テキストを列に分割」をクリックします。
「テキストの変換ウィザード」が開きますので、「次へ」をクリックします。
「区切り文字」を選択する画面で、「スペース」を選択します。
「次へ」をクリックし、住所を分割する列の形式を選択します。
「完了」をクリックします。
Accessでの方法:

テーブルの設計ビューで、住所を格納する列を選択します。
「入力規則」プロパティに、「[都道府県名] & [市区町村名]」を入力します。
「入力規則メッセージ」プロパティに、「〇〇県××市△△町の形式で入力してください。」と入力します。
「入力検証」プロパティで、検証規則を設定します。
「検証メッセージ」プロパティに、「〇〇県××市△△町の形式で入力してください。」と入力します。
フォームに住所を入力すると、自動的に都道府県名と市区町村名が分割されます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A