Have a Question?
リバースジオコーディングした住所項目を分割することは可能でしょうか
緯度経度より取得した住所を分割する数式を紹介します。
(項目 住所(逆ジオコーディング)rgAddress__c テキスト255桁 を分解します)
•国のセット
LEFT( rgAddress__c, 2)
•郵便番号のセット
MID( rgAddress__c , 5, 8)
•都道府県のセット
trim(if(or(FIND( “大阪府” , mid(rgAddress__c,14,3)) >0,or(FIND( “京都府” , mid(rgAddress__c,14,3)) >0,or(FIND( “東京都” , mid(rgAddress__c,14,3)) >0,FIND( “北海道” , mid(rgAddress__c,14,3)) >0,or(FIND( “県” , mid(rgAddress__c,14,3)) >0)))),mid(mid(rgAddress__c,14,3),1,if(FIND( “県” , mid(rgAddress__c,14,3)) >0,FIND( “県” , mid(rgAddress__c,14,3)),3)),””))
•市区郡のセット
mid(trim(if( FIND( “区” , rgAddress__c) >0,mid(rgAddress__c,len( if(or(FIND( “大阪府” , rgAddress__c) >0,or(FIND( “京都府” , rgAddress__c) >0,or(FIND( “東京都” , rgAddress__c) >0,FIND( “北海道” , rgAddress__c) >0,or(FIND( “県” , rgAddress__c) >0)))),mid(rgAddress__c,1,if(FIND( “県” , rgAddress__c) >0,FIND( “県” , rgAddress__c),3)),””))+1,FIND( “区” , rgAddress__c)-len( if(or(FIND( “大阪府” , rgAddress__c) >0,or(FIND( “京都府” , rgAddress__c) >0,or(FIND( “東京都” , rgAddress__c) >0,FIND( “北海道” , rgAddress__c) >0,or(FIND( “県” , rgAddress__c) >0)))),mid(rgAddress__c,1,if(FIND( “県” , rgAddress__c) >0,FIND( “県” , rgAddress__c),3)),””))),
if( FIND( “市川市”, rgAddress__c) >0,”市川市”,
if( FIND( “市原市”, rgAddress__c) >0,”市原市”,
if( FIND( “甘日市市”, rgAddress__c) >0,”甘日市市”,
if( FIND( “四日市市”, rgAddress__c) >0,”四日市市”,
if( FIND( “野々市市”, rgAddress__c) >0,”野々市市”,
if( FIND( “市” , rgAddress__c) >0,mid(rgAddress__c,len( if(or(FIND( “大阪府” , rgAddress__c) >0,or(FIND( “京都府” , rgAddress__c) >0,or(FIND( “東京都” , rgAddress__c) >0,FIND( “北海道” , rgAddress__c) >0,or(FIND( “県” , rgAddress__c) >0)))),mid(rgAddress__c,1,if(FIND( “県” , rgAddress__c) >0,FIND( “県” , rgAddress__c),3)),””))+1,FIND( “市” , rgAddress__c)-len( if(or(FIND( “大阪府” , rgAddress__c) >0,or(FIND( “京都府” , rgAddress__c) >0,or(FIND( “東京都” , rgAddress__c) >0,FIND( “北海道” , rgAddress__c) >0,or(FIND( “県” , rgAddress__c) >0)))),mid(rgAddress__c,1,if(FIND( “県” , rgAddress__c) >0,FIND( “県” , rgAddress__c),3)),””))),
if( FIND( “郡” , rgAddress__c) >0,mid(rgAddress__c,len( if(or(FIND( “大阪府” , rgAddress__c) >0,or(FIND( “京都府” , rgAddress__c) >0,or(FIND( “東京都” , rgAddress__c) >0,FIND( “北海道” , rgAddress__c) >0,or(FIND( “県” , rgAddress__c) >0)))),mid(rgAddress__c,1,if(FIND( “県” , rgAddress__c) >0,FIND( “県” , rgAddress__c),3)),””))+1,FIND( “郡” , rgAddress__c)-len( if(or(FIND( “大阪府” , rgAddress__c) >0,or(FIND( “京都府” , rgAddress__c) >0,or(FIND( “東京都” , rgAddress__c) >0,FIND( “北海道” , rgAddress__c) >0,or(FIND( “県” , rgAddress__c) >0)))),mid(rgAddress__c,1,if(FIND( “県” , rgAddress__c) >0,FIND( “県” , rgAddress__c),3)),””))),””))))))))),14,255)
•町名番地のセット
trim(if( FIND(“区”, rgAddress__c)>0,mid(rgAddress__c,FIND(“区”,rgAddress__c)+1,len(rgAddress__c))
,if( FIND(“市原市”,rgAddress__c)>0,mid(rgAddress__c,FIND(“市原市”,rgAddress__c)+3,len(rgAddress__c))
,if( FIND(“市川市”,rgAddress__c)>0,mid(rgAddress__c,FIND(“市川市”,rgAddress__c)+3,len(rgAddress__c))
,if( FIND(“甘日市市”,rgAddress__c)>0,mid(rgAddress__c,FIND(“甘日市市”,rgAddress__c)+4,len(rgAddress__c))
,if( FIND(“四日市市”,rgAddress__c)>0,mid(rgAddress__c,FIND(“四日市市”,rgAddress__c)+4,len(rgAddress__c))
,if( FIND(“市”,rgAddress__c)>0,mid(rgAddress__c,FIND(“市”,rgAddress__c)+1,len(rgAddress__c))
,if( FIND(“郡”,rgAddress__c)>0,mid(rgAddress__c,FIND(“郡”,rgAddress__c)+1,len(rgAddress__c)),””))))))))
※ 数式のみの紹介です。ワークフローや項目更新のロジック設定についてはお答えしかねます。
※ 市区郡のセットに関しては、市が2つある市川市、市原市、甘日市市、四日市市などは固定値を使用しています。これは作成した時(2010年)の数式の限界値5000文字だった為です。
※ 不具合やもっといい数式あれば、ご一報くだされば幸いです。