- ベストアンサー
住所録を分けたい
ひとつのセルに入っている住所を分割したいと思っています。 データはスペースや区切りなどはなく A2 札幌市 B2 豊平区 C2 豊平11条1丁目1-1札幌マンション111 A3 小樽市 B3 小樽町 C3 小樽1-1-1小樽アパート111 A4 石狩郡石狩町 C4 石狩1-1 といった形で500件超あります。 このうちC列を番地とアパート名などに分割したいのです。 ちなみに元データはD50~に入っています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
◆もしも、以下の条件が満足するなら可能かも 1)番地に必ず「-」があり、かつアパート名に「-」が無いこと A B C D 1 豊平11条1丁目1-1札幌マンション111 1札幌マンション111 豊平11条1丁目1-1 札幌マンション111 2 小樽1-1-1小樽アパート111 1小樽アパート111 小樽1-1-1 小樽アパート111 3 石狩1-1 1 石狩1-1 #N/A ★A列に、番地+アパート名が入力されているものとします ★B列を作業列として B1=REPLACE(A1,1,FIND("♪",SUBSTITUTE(A1,"-","♪",LEN(A1)-LEN(SUBSTITUTE(A1,"-",)))),) ★アパート名の式 D1=RIGHT(B1,LEN(B1)-MATCH(1,INDEX(1/(CODE(MID(ASC(B1),ROW($1:$50),1))>5000),),0)+1) ★番地の式 C1=IF(ISNA(D1),A1,LEFT(A1,LEN(A1)-LEN(D1))) ★この式を下にコピーして、不都合のあったところだけ、個別に「区切り位置」で対応する
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
これは断念したほうが良いと思う。 相当複雑になるから。 ーーー ではどうするか。 「人間が1セルずつ、区切りのところへ、スペースやカンマなどの区切り文字を入れて、エクセルのメニューのデーター区分位置・・の操作で、2セルに分けてください」 ーー 私の現在の力の及ぶ回答は下記のように複雑。 条件 A丁目、番地、号は半角文字である。 B半角の-でつないである。 従って町名に半角数字なしと仮定。 気付(マンションなどの部分)に-1など無いと仮定。 ーー 例データ たまたまA8から(特に意味なし) A列 新町-0-1-7小阪 7 9 小阪 喜多町-10-1ため池 4 9 ため池 弥生-2-1-89希望 7 10 希望 駅前-1 3 0 城北-3-1-11ハッピー 5 10 ハッピー 有楽町 0 1 有楽町 近藤 0 1 近藤 大工町1-2北野 5 7 北野 伊勢町1-2-1ぐれいす 7 9 ぐれいす 北の町1-1-1ぐれいす 5 9 ぐれいす 北の町1-2-31ぐれいす12 7 10 ぐれいす12 北の町1-2-32 7 0 ーー B8には、-の出てくる一番右側の文字の何番目の文字かを求める。 B8の式は =MAX(IF(ISERROR(FIND({"-1","-2","-3","-4","-5","-6","-7","-8","-9"},A8)),"",FIND({"-1","-2","-3","-4","-5","-6","-7","-8","-9"},A8))) 下方向に式を複写する。 結果は上記の通り。 実は1-12-1などの場合適当でないが、その後(下記)に悪影響がない。 (実は後でーの初出位置でもよいことが気が付いたがそのままにする) ーー 全角文字の初めて現れる一番左側の文字の何番目の文字かを求める。 関数では難しいと思い D8にユーザー関数を使う。 =zen(A8,B8) をいれて した報告に式を複写する。 ユーザー関数は Function zen(A, x) For j = x + 1 To Len(A) s = Mid(A, j, 1) y = LenB(StrConv(s, vbFromUnicode)) If y = 2 Then zen = j Exit Function End If Next j End Function ーーー 結果は上記の通り。 E8に =IF(D8*B8=0,"",MID(A8,D8,LEN(A8)-D8+1)) と入れて下方向に式を複写する。 結果は上記E列の通り。 ーーー もっと簡単な方法の回答が出るかな。 上記でやっていることを全てをVBAでやるほうがすっきりする。 ーー 上記でやっても必ず人間の目でのチェックは必要。 上記A,Bのルールが実際に守られているかどうか、チェックする必要があるから。
- n-jun
- ベストアンサー率33% (959/2873)
>このうちC列を番地とアパート名などに分割したいのです。 番地とアパート名等を明確に分ける決まりはありますか? 例えば、番地は1-1の形になっているとか。
補足
番地は1-1だけではなく1番や111のみなどさまざまです。 アパート名がある場合のみ分割するという風にしたかったのですが・・・。