[[20080218235117]] 『3個の条件式』(123456) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『3個の条件式』(123456)

住所から市、郡、区までをとりだしたいのですが、二つの選択はできるのですが、3つから選択するのにはなにかいい方法はないでしょうか?
現在は下記のようにして、区を取り出すときは手作業で変更しています

 =IF(ISERR(MID(D6748,1,(SEARCH("市",D6748,1)))),MID(D6748,1,(SEARCH("郡",D6748,1))),MID(D6748,1,(SEARCH("市",D6748,1))))


 市川市とか郡山市の場合は難しいですね。
 それとも地域限定なのでしょうか。
 実際の地域名とどのように抽出するのかを数例提示されてはいかがでしょう。

 回答ではありませんが、ご提示の式の場合
 =IF(ISERROR(FIND"市",D6741)),LEFT(D6741,FIND("郡",D6741)),LEFT(D6741,FIND("市",D6741)))
 とすれば若干式が短くなります。(gon-2)

ありがとうございます

現在、市川市や郡山市などは数がとても少ないので、手作業で修正しています 地域限定でもありません ご回答いただきました式でやってみます


 こんな関数が有るには有ります。
 住所を3分割します。
 Alt+F11→挿入→標準モジュールへコピペ
 3列選択したうえ =splt3(a1) と書き込みCtrl+Shift+Enterで確定します。
 データ分だけフィルダウン。
       (弥太郎)
 '-----------------------------
 Dim sp1 As String, sp2 As String, sp3 As String
 Function splt3(adrs As String)
    Dim x(3) As String
    If adrs = "" Then adrs1 = "": Exit Function
    work (adrs)
    x(0) = sp1
    x(1) = sp2
    x(2) = sp3
    splt3 = x
 End Function
 Sub work(adrs)
    Dim fist_Cnt As Integer, lngh As Integer
    Dim data As String, get_data As String
    data = adrs
    With CreateObject("vbscript.regexp")
        .Pattern = "[ \s,]"
        .Global = True
        data = .Replace(data, "")
        .Pattern = "^(東京都|大阪府|京都府|北海道)|^(..|...)県"
        If .test(data) Then
            sp1 = .Execute(data)(0)
            data = Mid(data, .Execute(data)(0).Length + 1)
        Else
            sp1 = ""
        End If
        .Pattern = "市"
        If .test(data) Then
            fist_Cnt = .Execute(data)(0).firstindex
            .Pattern = "^(八日市場|市川|市原|今市|四日市|八日市|廿日市)市"
            If .test(data) Then
                sp2 = .Execute(data)(0)
                lngh = .Execute(data)(0).Length
            Else
                .Pattern = "^(余市|高市)郡"
                If .test(data) Then
                    sp2 = .Execute(data)(0)
                    lngh = .Execute(data)(0).Length
                Else
                    .Pattern = "^(郡上|小郡|郡山|蒲郡|大和郡山)市"
                    If .test(data) Then
                        sp2 = .Execute(data)(0)
                        lngh = .Execute(data)(0).Length
                    Else
                        .Pattern = "^(.+市)(郡.+)"
                        If .test(data) Then
                            If InStr(data, "市") < InStr(data, "郡") Then
                                sp2 = Left(data, InStr(data, "市"))
                            Else
                                sp2 = Left(data, InStr(data, "郡"))
                            End If
                            lngh = Len(sp2)
                        Else
                        .Pattern = "^(.+郡)(.+)*市.+"
                            If .test(data) Then
                                sp2 = .Replace(data, "$1")
                                lngh = Len(sp2)
                            Else

                                sp2 = Left(data, fist_Cnt + 1)
                                lngh = Len(sp2)
                            End If
                        End If
                    End If
                End If
            End If
                data = Mid(data, lngh + 1)
                .Pattern = "^.+区"
                If Right(sp2, 1) = "市" And .test(data) Then
                    get_data = .Execute(data)(0)
                    If .Execute(data)(0).Length < 6 Then
                        .Pattern = "([\d0-9]|一|二|三|四|五|六|七|八|九|十|公園|須岡|城西|八迫|由宇町.|太田中|太田北|金生字.)区"
                        If Not .test(data) Then
                            .Pattern = "(見市笠原町|部市生地|諸市東区)"
                            If Not .test(adrs) Then
                                sp2 = sp2 & get_data
                                data = Mid(data, Len(get_data) + 1)
                            End If
                        End If
                    End If
                End If
            'End If

        ElseIf sp1 = "東京都" Or sp1 = "" Then
            .Pattern = "^.+区"
            If .test(data) Then
                sp2 = .Execute(data)(0)
                data = Mid(data, .Execute(data)(0).Length + 1)
            End If
        Else
            .Pattern = "^.+郡"
            If .test(data) Then
                sp2 = Left(data, InStr(data, "郡")) '.Execute(data)(0)
                data = Mid(data, Len(sp2) + 1)
            End If
        End If
    End With
    sp3 = data
 End Sub


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.