- ベストアンサー
エクセルのセルデータを分解する?
こんばんは。 エクセル2002を使用しています。 住所録を作成していたのですが、ひとつのセルにすべての住所を入力してしまいました。 たとえば「東京都千代田区1-1-1」と入力しました。 この住所を、「東京都千代田区」と「1-1-1」と振り分ける簡単な方法を調べているのですが・・・ ちょっと先に進めないの状態です。 よろしかったら助けていただきたいのです。 よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#3です。配列数式による回答を1つ。 #2の配列数式のご回答が、私のやり方が悪いのかも知れないが、上手く出来なかったので どの列でも良いがE1:E9に全角で1,2,3,4,5,6,7,8,9と入れる。01町目、01番地、の01は無いと思って0は省いた。 A列に住所が入っているとして F列(どの列でも良い)に =MIN(IF(ISERROR(FIND($E$1:$E$9,A1)),100,FIND($E$1:$E$9,A1))) といれ、ShiftキーとCtrlキーを押しつつEnterキーを押す(配列数式) (データと結果) 千代田区3-1 5 山田2-1 3 久留米市梅田町5-11 8 山中市上田町北端3-9-1 9 山中市上田町北5-6-2 8 北2-5 2 この数字を基に前半と後半に分けるのは G1に=LEFT(A1,F1-1)をいれてG2以下に複写する。 H1に=RIGHT(A1,LEN(A1)-F1+1)といれ、H2以下に複写する。
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
初めて全角数字が表れる位置を返す、ユーザー関数を作ります。(丁目が半角数字の例になってますが、全角の方が ベターと考えた) ツール-マクロ-VBE-挿入-標準モジュールで出てくる画面に Function fndp(a) f = Len(a) b = "123456789" '丁目が半角なら半角に変える For i = 1 To 9 c = Mid(b, i, 1) p = InStr(a, c) If p <> 0 Then If p < f Then f = p End If End If Next i fndp = f End Function を貼りつける。 そしてA列以外に=LEFT(A1,fndp(A1)-1)で漢字部分、 丁目部分は=RIGHT(A1,LEN(A1)-fndp(A1)+1)
お礼
御礼が遅くなりました。 マクロですか・・・ チョッと自信がないのですが試してみます。 ありがとうございます。
- edomin
- ベストアンサー率32% (327/1003)
A1に住所が、E1:E9に1~9までの数字が入っているとして、 左側 =LEFT(A1,FIND(E1:E9,ASC(A1),1)-1) 右側 =RIGHT(A1,LEN(A1)-FIND(E1:E9,ASC(A1),1)+1) と入力し、「Ctrl」+「Shift」+「Enter」で確定します。 これで、数字で始まっているところとそれ以前を分離できます。
お礼
御礼が遅くなって申し訳ございません。 今試していたところです。 なんとなく先にすすめそうです。頑張ってみます。 ありがとうございます。
区内であれば A列データ,B列所在地,C列番号として B列に =left(A2,find("区",a2)) C列に =right(a2,len(a2)-len(b2)) でいけます
お礼
お礼の返事遅くなりました。 セルのデータを右と左で振り分けるわけですね。 やってみます。 ありがとうございました。
お礼
色々とお手数をお掛けいたしました。 本当にありがとうございました。
補足
ほかでも色々と調べまして、先程以下の関数を見つけました。 失礼とは存じますがここに掲載させていただきます。 セル「A1」に住所が入っているとして、 セル「B1」に =LEFT(A1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},ASC(A1)&1234567890))-1) セル「C1」に =RIGHT(A1,LEN(A1)-LEN(B1)) または =RIGHT(A1,LEN(A1)-MIN(FIND({0,1,2,3,4,5,6,7,8,9},ASC(A1)&1234567890)-1))