|
▼ハチ さん:
>▼りんご さん:
>>▼ハチ さん:
>>すいません、番地以降を取り出したいのですが、どこを参考にすれば?
>
>質問を勘違いしてました。
>「番地付きの住所」 と 「その他」
>に分けたいということですね。
このデータで100%の精度を求めることは無理があると思います。
すべての住所情報(番地まで)を網羅した
データベースがあるならできるかもしれませんけど・・
最後の文字からチェックしていくほうが、多少マシかなと思い、
なんとなく考えてみました。
なんとなくなので、バグがあるかもしれません。
Option Explicit
Sub Test()
Dim Str As String
Str = "札幌市南区○○町1-1-1札幌アパート101"
MsgBox Mid(Str, func_Spt_Len(Str))
Str = "札幌市南区○○町1番地1-10札幌マンション1012"
MsgBox Mid(Str, func_Spt_Len(Str))
Str = "札幌市南区○○町1-1-1"
MsgBox Mid(Str, func_Spt_Len(Str))
End Sub
Private Function func_Spt_Len(ByVal Str As String) As Long
Dim i As Long
Dim j As Long
Dim all_len As Long
Dim buf As Variant
all_len = Len(Str)
'最後から←に2文字づつチェックして -x の位置
For i = all_len - 1 To 1 Step -1
buf = Mid(Str, i, 2)
If buf Like "-?" Then
Exit For
End If
Next
j = i + 1 ' - の分 +1
'数値ではなくなるまで→に移動
For i = j To all_len
buf = Mid(Str, i, 1)
If IsNumeric(buf) = False Then
Exit For
End If
Next
func_Spt_Len = i
End Function
|
|