[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『番地とマンション名・部屋番号が混在するセルを、効率よく分割する方法』(中西学)
番地とマンション名・部屋番号が混在するセルを、効率よく分割する方法はありますでしょうか。
入力規則はバラバラでして、以下のような具合です。これらのセルが18,000ほどありまして、非常に困っております。
━━━━━━
1-C-1001号室
1-2-3-506
1-2-3中央ビル506
1-2-3-中央ビル506
1-2-3-中央ビル-C506
━━━━━━
お知恵をお借りできますと幸いです。
< 使用 Excel:Excel2010、使用 OS:Windows10 >
とりあえず、例示のパターンならどのように分けたいのかを書かれた方がいいと思います。 (コナミ) 2019/01/11(金) 15:37
━━━━━━
1-C-1001号室 → 1 C-1001号室
1-2-3-506→1-2-3 506
1-2-3中央ビル506 →1-2-3 中央ビル506
1-2-3-中央ビル506→1-2-3 中央ビル506
1-2-3-中央ビル-C506→1-2-3 中央ビル-C506
━━━━━━
(中西学) 2019/01/11(金) 15:55
最初のケースとかどこまでが住所なのかを判別するのが難しそうですよね。 結局は目視になりそうだし。
もし私がやるなら、MID関数とかで頭から10文字とかを抜き出す式を作って 別セルに分ける→それでできているデータは抜き出しておく 10を11に変えて残りをチェック…
みたいにするでしょうか。 アナログな対応しか思いつきません… (コナミ) 2019/01/11(金) 16:32
例が少なすぎるなぁ・・
(1) B1セル =MATCH(TRUE,INDEX(ISERR(-MID(SUBSTITUTE(SUBSTITUTE(A1,"-","C",3),"-","0"),ROW($A$1:$A$50),1)),0),0) (2) C1セル =LEFT(A1,B1-1-(RIGHT(LEFT(A1,B1-1))="-")) (3) D1セル =MID(A1,B1+(LEFT(MID(A1,B1,50))="-"),50)
<結果図> 行 _________A_________ _B_ __C__ ______D______ 1 1-C-1001号室 3 1 C-1001号室 2 1-2-3-506 6 1-2-3 506 3 1-2-3中央ビル506 6 1-2-3 中央ビル506 4 1-2-3-中央ビル506 6 1-2-3 中央ビル506 5 1-2-3-中央ビル-C506 6 1-2-3 中央ビル-C506
( 半平太) 2019/01/11(金) 17:13
Dim ctr As Long, i As Long, c As Range Range("B:C").ClearContents For Each c In Range("A:A").SpecialCells(2) ctr = 0 For i = 1 To Len(c.Value) If Mid(c.Value, i, 1) = "-" Then ctr = ctr + 1 If ctr = 3 Then c.Offset(, 1).Value = Left(c.Value, i - 1) c.Offset(, 2).Value = Mid(c.Value, i + 1) Exit For End If If Not (Mid(c.Value, i, 1) Like "[0-9]") And Mid(c.Value, i, 1) <> "-" Then c.Offset(, 1).Value = Left(c.Value, i - 1) c.Offset(, 2).Value = Mid(c.Value, i) Exit For End If Next i If Right(c.Offset(, 1).Value, 1) = "-" Then c.Offset(, 1).Value = Left(c.Offset(, 1).Value, Len(c.Offset(, 1).Value) - 1) Next c End Sub (mm) 2019/01/11(金) 17:16
イレギュラーな組み合わせ等もありましが、ご教示いただいたマクロと関数を駆使しながらデータ分割ができました。感謝です。
(中西学) 2019/01/19(土) 20:45
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.