以下のオペレーションを可能とするエクセル関数をご存知でしょうか?
そういう関数が実在するならその関数をご教示下さい。
なければどうやれば目的が果たせるかご教示下さい。
A2セルに「浜松市高丘北1-2-3」のようなデータがあれば
B2セルに「浜松市高丘北」のデータが返ってくる。
A3セルに「浜松市佐鳴台1丁目2番3号」のようなデータがあれば
B3セルに「浜松市佐鳴台」のデータが返る。
つまり、文字列のうち、最初に出現する数字情報以降の文字をカットしたいのです。
目的は浜松市の政令指定都市移行に伴う顧客データベース変更で、
浜松市HPに掲載されている町名区名対比表にVlookup関数でぶつける作業上、
丁目・地番が邪魔なのでカットしたいのです。
(新潟市でも同じ話がある)
マクロにしたほうがよいですね。
無理やりだけど、関数だけでやるならこんな感じでしょうか。
C1の内容 =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"1","#"),"2","#"),"3","#"),"4","#"),"5","#"),"6","#")
B1の内容 =LEFT(C1,FIND("#",SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(C1,"7","#"),"8","#"),"9","#"))-1)
B1に数字の手前までが入ります。
2つのセルに分けているのは、関数のネストの制限によるものでC1をワークとして使っています。
数字が全角文字ならそのように書き換えてください。
他にも以降は無視したいという文字がある場合は、Substituteを増やしてください。
ただ、地名自体にも使われるような漢数字には対応できないと思います。
http://www.geocities.jp/chiquilin_site/data/050228_delimination_...
住所データの加工でしたら↑のサイトがお薦めです。
「その3」の地名までを参考に住所を分割してから、
H2=D2&E2&F2&G2
とすればH2に番地の前、地名までが表示されます。
または
1行目タイトル行、
A列が元データとして、B2に「その3」の番地以下を取り出す数式↓
=REPLACE(SUBSTITUTE(SUBSTITUTE(A2,CHAR(222),""),CHAR(223),""),1,MIN(FIND({"1","2","3","4","5","6","7","8","9","0"},JIS(A2&1234567890)))-1,"")
に入力した上で、C2に
=LEFT(A2,LEN(A2)-LEN(B2))
とすればC2に番地以前の住所データが表示されます。
少々に複雑なことをしていますので、解説が必要でしたら教えてください。
コメント欄で補足します。
町名区名を用いれば そんなに難しくなく分割できます。
町名区名対比表 フラグ として
浜松市高丘北 1
浜松市佐鳴台 1
というデータを作ります。
これを住所の列の最後に追加してソートします。
浜松市高丘北1-2-3
浜松市佐鳴台1丁目2番3号
浜松市高丘北 1
浜松市佐鳴台 1
並び替えをするときは、並び替えのところで オプション
方法- ふりがなを使わないに選択します。
浜松市高丘北 1
浜松市高丘北1-2-3
浜松市佐鳴台 1
浜松市佐鳴台1丁目2番3号
となります。
これで A列 住所 B列 フラグとなりますので C列の二行目から(データがある行の2列目から)
=IF(B2="",IF(B1=1,A1,C1),"")
と入れます。
これが 町名区名です。
次に D列の二行目に
=IF(B2="",RIGHT(A2,LEN(A2)-LEN(C2)),"")
と入れ
このCとDのセルをコピーして 行数分 貼り付けます。
関数ではないのですが..それと、他の方と回答がだぶったらすみません。 m(__)m
郵便番号変換ウィザードを使って
まずは 住所→郵便番号に変換して
その横のセルに 郵便番号→住所に変換する
参考)
http://www.eurus.dti.ne.jp/~yoneyama/Excel/benri.htm#yuubin
回答者 | 回答 | 受取 | ベストアンサー | 回答時間 | |
---|---|---|---|---|---|
1 | ![]() |
323回 | 288回 | 9回 | 2006-12-13 12:59:47 |
ありがとうございます。