- ベストアンサー
Excel VBAで住所の切り分け方法を解説
- Excel VBAを使用して、氏名と住所が混ざったセルを切り分ける方法を紹介します。具体的には、氏名部分と住所部分を別々の列に切り出す方法を解説します。
- マクロを使用して、複数のセルに対して一括で処理する方法も紹介します。また、数字が1〜9までの範囲にある場合にも対応しています。
- この方法を使うことで、混在している氏名と住所を簡単に切り分けることができます。Excelのデータ整理や住所の扱いにお困りの方にオススメです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
関数でもできます。 必ずスペースがあり、2番目のスペースで分けるなら、 B2 =LEFT(A2,FIND(" ",A2,FIND(" ",A2)+1)+1) C2 =MID(A2,FIND(" ",A2,FIND(" ",A2)+1)+1,100) 最初の数字で分けるなら B2 =LEFT(A2,MIN(SEARCH({1,2,3,4,5,6,7,8,9,0},A2&1234567890))-2) C2 =MID(A2,MIN(SEARCH({1,2,3,4,5,6,7,8,9,0},A2&1234567890)),100) VBA ならこうなります。 A1にタイトルがあり、A2からデータが入っている設定です。 ' Option Explicit ' Sub Macro1() ' Dim RegExp As Object Dim Row As Long Dim What As String Dim Execute As Object Dim FirstIndex As Integer ' Set RegExp = CreateObject("VBScript.RegExp") RegExp.Global = True RegExp.Pattern = "\d" ' For Row = 2 To [A1].End(xlDown).Row What = Cells(Row, "A") Set Execute = RegExp.Execute(What) FirstIndex = Execute(0).FirstIndex Cells(Row, "B") = Left(What, FirstIndex) Cells(Row, "C") = Mid(What, FirstIndex + 1) Next Row End Sub
その他の回答 (1)
- watabe007
- ベストアンサー率62% (476/760)
>For Each A列 In Selection > A列.Offset(, 1).Value = Left([ Sub Test() Dim A列 As Range, n As Long For Each A列 In Selection n = Evaluate("MIN(SEARCH({1,2,3,4,5,6,7,8,9,0}," & A列.Address & "&1234567890))") A列.Offset(, 1).Value = Left(A列, n - 1) A列.Offset(, 2).Value = Mid(A列, n) Next End Sub
お礼
ご回答ありがとうございました! 教えていただいたコードを参考に記述したら うまくいきました。
お礼
ご丁寧にご回答ありがとうございました B2 =LEFT(A2,MIN(SEARCH({1,2,3,4,5,6,7,8,9,0},A2&1234567890))-2) C2 =MID(A2,MIN(SEARCH({1,2,3,4,5,6,7,8,9,0},A2&1234567890)),100) の式をVBAで記述したらうまくできました。 大変勉強になりました。