いちばん失敗した人決定戦

やりたいことは、住所を「●丁目」までにして、それ以降の詳細はカットしたい。
問題として、下記の変換方法だと、「丁」や「-」がないものは空白で返してしまう。
何か良い方法はありませんでしょうか。
よろしくお願いいたします。

Left([番地],InStr(Replace([番地],"丁","-"),"-")-1)
丁を「-」に変換し、「-」より左を抽出


浅草1丁目2-3-4 → 浅草1
浅草1-2-3-4 → 浅草1
浅草1 → 空白
浅草 → 空白

A 回答 (3件)

> 下記の変換方法だと、「丁」や「-」がないものは空白で返してしまう。



> Left([番地],InStr(Replace([番地],"丁","-"),"-")-1)

この部分だけが解決すればよいですか。


解決方法)InStr に与える文字列に必ず "-" が存在する様に加工する。

例えば、Left([番地],InStr(Replace([番地] & "-","丁","-"),"-")-1)
とか、Left([番地],InStr(Replace([番地],"丁","-") & "-","-")-1)

で、どうでしょうか
    • good
    • 0

無条件でLeft関数でとろうとしているから。



Instrは対象がない場合0をかえすのでIIFで判定すればよいかと。

(ただ"丁"が途中にある地名の場合おかしくなると思いますが。)

---
IIF(InStr(Replace([番地],"丁","-"),"-")>0,
Left([番地],InStr(Replace([番地],"丁","-"),"-")-1),
[番地])
    • good
    • 0

有りません。



やるとすれば全国の町名、字名の構成(地番、丁目が有るか?など)のデーターベースを作って変換するより無いでしょう。

浅草1の様な場合浅草一丁目なのか浅草1番(地)なのか解りません。

また地番がない場合やかなが入る所もあります。

無番地、や イ1 など。
    • good
    • 0

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