【最大10000ポイント】当たる!!質問投稿キャンペーン!

ひとつのセルに入っている住所を分割したいと思っています。
データはスペースや区切りなどはなく
A2 札幌市 B2 豊平区 C2 豊平11条1丁目1-1札幌マンション111
A3 小樽市 B3 小樽町 C3 小樽1-1-1小樽アパート111
A4 石狩郡石狩町     C4 石狩1-1
といった形で500件超あります。
このうちC列を番地とアパート名などに分割したいのです。
ちなみに元データはD50~に入っています。

このQ&Aに関連する最新のQ&A

A 回答 (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)))

★この式を下にコピーして、不都合のあったところだけ、個別に「区切り位置」で対応する
    • good
    • 0

これは断念したほうが良いと思う。


相当複雑になるから。
ーーー
ではどうするか。
「人間が1セルずつ、区切りのところへ、スペースやカンマなどの区切り文字を入れて、エクセルのメニューのデーター区分位置・・の操作で、2セルに分けてください」
ーー
私の現在の力の及ぶ回答は下記のように複雑。
条件
A丁目、番地、号は半角文字である。
B半角の-でつないである。
従って町名に半角数字なしと仮定。
気付(マンションなどの部分)に-1など無いと仮定。
ーー
例データ たまたまA8から(特に意味なし)
A列
新町-0-1-7小阪79小阪
喜多町-10-1ため池49ため池
弥生-2-1-89希望710希望
駅前-130
城北-3-1-11ハッピー510ハッピー
有楽町01有楽町
近藤01近藤
大工町1-2北野57北野
伊勢町1-2-1ぐれいす79ぐれいす
北の町1-1-1ぐれいす59ぐれいす
北の町1-2-31ぐれいす12710ぐれいす12
北の町1-2-3270
ーー
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のルールが実際に守られているかどうか、チェックする必要があるから。
    • good
    • 0

>このうちC列を番地とアパート名などに分割したいのです。


番地とアパート名等を明確に分ける決まりはありますか?
例えば、番地は1-1の形になっているとか。

この回答への補足

番地は1-1だけではなく1番や111のみなどさまざまです。
アパート名がある場合のみ分割するという風にしたかったのですが・・・。

補足日時:2007/11/05 12:52
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング