住所を数字で2分割する関数

以下のような住所を、
東京都千代田区千代田 1-1 ●●マンションA棟 1002号室
以下のように2つに分けたい。数字があるところから住所2に入れたい。
住所1: 東京都千代田区千代田
住所2:1-1 ●●マンションA棟 1002号室

これを実現する関数を作成しました。

Function SplitAddress(ByVal fullAddress As String) As Variant
    Dim address1 As String
    Dim address2 As String
    Dim i As Integer
    Dim isNumericFound As Boolean

    ' 数字がある位置から住所を分割
    For i = 1 To Len(fullAddress)
        If IsNumeric(Mid(fullAddress, i, 1)) Then
            isNumericFound = True
            Exit For
        End If
    Next i

    If isNumericFound Then
        ' 数字が見つかった場合
        address1 = Trim(Left(fullAddress, i - 1))
        address2 = Trim(Mid(fullAddress, i))
    Else
        ' 数字が見つからなかった場合
        address1 = Trim(fullAddress)
        address2 = ""
    End If

    ' 結果を配列に格納して返す
    SplitAddress = Array(address1, address2)
End Function

このサンプルプログラムでは、SplitAddressという関数が住所を分割して結果を配列に格納し、以下のTestSplitAddressサブルーチンがこの関数を呼び出して結果を表示します。関数の返り値として配列を使用しているため、住所1はresult(0)、住所2はresult(1)でアクセスできます。

Sub TestSplitAddress()
    Dim result As Variant
    Dim fullAddress As String

    ' 住所を指定
    fullAddress = "東京都千代田区千代田 1-1 ●●マンションA棟 1002号室"

    ' 住所を分割する関数を呼び出し
    result = SplitAddress(fullAddress)

    ' 結果を表示
    MsgBox "住所1: " & result(0) & vbCrLf & "住所2: " & result(1)
End Sub

Follow me!