[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『数字と文字をわけたい』(9in10)
住所録を作っているのですが、番地とビル名が下記のようにつなげて入力されています。
1丁目8-34住友生命ビル
2丁目9-15上野ビル2F
4丁目9-12下川ビル1F
これらをB1に番地、C1にビル名と分ける方法はありますでしょうか?
Excel2000、 WindowsXP です。
宜しくお願い致します。
人間ならどこで区切るかひと目でわかりますが、エクセルには わかりません。規則性がないと数式にはしづらいです。 一応、「-」の後ろの数字で区切るとすると下記のようになります。 但し、「-」がないとか2つ以上あるとエラーになります。 B1セル =LEFT(A1,FIND(LOOKUP(10^17,--MID(A1,FIND("-",A1)+1,ROW($A$1:$A$1000))),A1)+LEN(LOOKUP(10^17,--MID(A1,FIND("-",A1)+1,ROW($A$1:$A$1000))))-1) C1セル =RIGHT(A1,LEN(A1)-LEN(B1)) もっとすっきりした数式がありそう。 (純丸)(o^-')b
純丸さんのおっしゃるとおり、何らかの規則性がないと難しいのです。 一般的には、住所とビル名の間に空白があるなどというのが多いのですが、 そういった場合は比較的容易に分割できることが多いのです。
ここではそのような規則性がないので、 1.ビル名以外に使われている数字以外の文字は「丁目」と「-」のみである。 2.「-」はビル名の中に含まれないこと。 (「住友生命ビル4F-23号室」 のような使い方はされていない) 以上を条件に考えてみました。
B1=SUBSTITUTE(A1,C1,"") C1=RIGHT(A1,LEN(A1)-COUNTIF(A1,"*丁目*")*2-COUNTIF(A1,("*-*")) -SUM(ISNUMBER(LEFT(SUBSTITUTE(SUBSTITUTE(A1,"丁目",""),"-",""),ROW($A$1:$A$20))*1)*1))
なお、C1は配列数式ですので、Ctrl+Shft+Enterで確定してください。 (sato)
時間が出来たので、チョット突っ込み〜♪
純丸さんの数式は、番地に同じ数字があったり、「-」が二つあるとエラーに。 satoさんの数式は、「-」が二つあるとエラーに。
そこで、二人の数式をヒントにσ(^o^;)も考えてみました。
A B C 1 1丁目8-34住友生命ビル 1丁目8-34 住友生命ビル 2 2丁目9-9上野ビル2F 2丁目9-9 上野ビル2F 3 4-9-12下川ビル1F 4-9-12 下川ビル1F
B1 =SUBSTITUTE(A1,C1,"") C1 =IF(A1="","",MID(A1,MAX((MID(A1,ROW($A$1:$A$20),1)="-")*ROW($A$2:$A$21)) +LEN(LOOKUP(99^9,--MID(A1,MAX((MID(A1,ROW($A$1:$A$20),1)="-")*ROW($A$2:$A$21)), ROW($A$1:$A$20)))),LEN(A1))) ↑配列数式です。
※条件は、satoさんと一緒です。 (キリキ)(〃⌒o⌒)b
キリキさん、ご指摘ありがとうございます。気がつきませんでした。 一応、「-」が二つ以上あってもいいように修正してみました。 まさか、「丁目」が二つあるなんてことは無いでしょうね(笑) (sato)
C1=RIGHT(A1,LEN(SUBSTITUTE(A1,"-",""))-COUNTIF(A1,"*丁目*")*2 -SUM(ISNUMBER(LEFT(SUBSTITUTE(SUBSTITUTE(A1,"丁目",""),"-",""),ROW($A$1:$A$20))*1)*1))
ビル名が全角なら C1=MID(A1,MAX((LENB(MID(A1,ROW(OFFSET(A$1,,,FIND("ビル",A1)-1,1)),1))<2)* ROW(OFFSET(A$1,,,FIND("ビル",A1)-1,1)))+1,31) でどうでしょう? ビルの前に出てくる最終半角文字位置を計算しています。
kym (^^)_v
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.