郵便番号の次に来るスペースが全角である場合や半角である場合のどちらであっても有効で、尚且つ、「〒」が付いているか否かにも影響されず、文字列の先頭の所に余分なスペースがある場合や、郵便番号自体が全角の数字と半角の数字のどちらであっても影響されず、また、郵便番号の桁数が7桁であっても、5桁であっても、3桁であっても影響されず、郵便番号の途中にある「-」(ハイフォン)が全角文字である場合や半角文字である場合、「―」(全角のダッシュ)である場合、「ー」(全角の長音記号)である場合でも、「(『〒』マーク無し)『前半部分の数字』+『半角文字のハイフォン』+『後半部分の数字』」に直した形で郵便番号を取り出す事が出来る方法です。
尚、
>元の列からは郵便番号を削除
という処理に関しては関数では行う事が出来ませんので、取り敢えず仮の話として、「郵便番号だけ」をA列のセルに、「郵便番号を除いた住所」をC列のセルに表示させるものとします。
まず、A1セルに次の関数を入力して下さい。
=IF(ISERROR(1/(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(LEFT(TRIM(ASC($B1)),FIND(" ",TRIM(ASC($B1))&" ")-1),"〒",),"‐","ー"),"―","ー"),"-","ー")=TEXT(REPLACE(MID(LEFT(TRIM($B1),FIND(" ",TRIM(ASC($B1))&" ")-1),1+(LEFT(TRIM($B1),1)="〒"),10),4,1,)+0,"[<=999]000;[<=9999]000ー00;000ー0000"))),"",TEXT(REPLACE(MID(LEFT(TRIM($B1),FIND(" ",TRIM(ASC($B1))&" ")-1),1+(LEFT(TRIM($B1),1)="〒"),10),4,1,)+0,"[<=999]000;[<=9999]000-00;000-0000"))
次に、A1セルをコピーして、A2以下に貼り付けて下さい。
次に、C1セルに次の関数を入力して下さい。
=IF($B1="","",REPLACE(TRIM($B1),1,FIND(" ",TRIM(ASC($B1))&" ")*($A1<>""),))
次に、C1セルをコピーして、C2以下に貼り付けて下さい。
以上です。
お礼
ありがとうございます。 素晴らしいです。 もう一歩、条件で上げていなかったですが、郵便番号後のスペースは、半角のほか、全角のものが混ざっています。 半角パターンと全角パターンで2つの関数をORでつなげたらどうかなと思ったのですがエラーで。。。 基本的なことかも知れませんが、方法はありますでしょうか。困難でしたら2回別の関数をかけようと思います。