[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『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.