• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel VBAで住所の切り分け)

Excel VBAで住所の切り分け方法を解説

このQ&Aのポイント
  • Excel VBAを使用して、氏名と住所が混ざったセルを切り分ける方法を紹介します。具体的には、氏名部分と住所部分を別々の列に切り出す方法を解説します。
  • マクロを使用して、複数のセルに対して一括で処理する方法も紹介します。また、数字が1〜9までの範囲にある場合にも対応しています。
  • この方法を使うことで、混在している氏名と住所を簡単に切り分けることができます。Excelのデータ整理や住所の扱いにお困りの方にオススメです。

質問者が選んだベストアンサー

  • ベストアンサー
  • SI299792
  • ベストアンサー率47% (774/1621)
回答No.1

関数でもできます。 必ずスペースがあり、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

jyona51
質問者

お礼

ご丁寧にご回答ありがとうございました 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で記述したらうまくできました。 大変勉強になりました。

その他の回答 (1)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

>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

jyona51
質問者

お礼

ご回答ありがとうございました! 教えていただいたコードを参考に記述したら うまくいきました。

関連するQ&A

専門家に質問してみよう