http://FMPro.info  FileMaker Pro 関連総合ポータルサイト

City 関数

カテゴリー : 住所
計算結果のデータタイプ : テキスト
対応FileMakerバージョン : 対応 7  対応 8  対応 8.5  対応 9  対応 10  対応 11  未対応 12  未対応 13  未対応 14  未対応 15
作者 : 社本修司 株式会社ジェネコム

概要

住所から市区郡町村名を返します。

構文

City ( 住所 )

引数

引数名タイプ備考
住所テキスト 千葉県鎌ケ谷市右京塚東3丁目-20-5

別のウィンドウで、引数の値を変更してテストすることが出来ます

City ( "千葉県鎌ケ谷市右京塚東3丁目-20-5" )

結果

鎌ケ谷市

/*==============================================================

カスタム関数     City ( 住所 )

  CopyRight©2004-2009,SHAMOTO Syuji
  <http://www.FMPro.jp>
  
住所から市区郡町村名を返します。
町村の場合は、郡を含む町または村まで。政令指定都市の場合は区までを市区郡町村名とします。
2011.11.11 現在

このカスタム関数を引用するに当たっては、必ずコメントも一緒に引用してください。

// 都道府県の判定に Pref 関数(カスタム関数)を使用
//
Pref 関数は <http://www.fmpro.jp> を参照のこと

=============================================================*/


Let
(
    [
    PREF = Pref ( 住所 ) ;
    ADDRESS = Substitute ( 住所 ; PREF ; "" ) ;
    C = Position ( ADDRESS ; "市" ; 1 ; 1 ) ;
    T = Position ( ADDRESS ; "町" ; 1 ; 1 ) ;
    V = Position ( ADDRESS ; "村" ; 1 ; 1 ) ;
    K = Position ( ADDRESS ; "区" ; 1 ; 1 ) ;
    G = Position ( ADDRESS ; "郡" ; 1 ; 1 ) ;
    TMP =
    Case (
     // 市名に「市」が含まれる
        (
             PatternCount ( 住所 ; "市川市" ) and
            (
                 Middle ( 住所 ; Position ( 住所 ; "市川市" ; 1 ; 1 ) - 1 ; 1 ) = "県" or
                 Position ( 住所 ; "市川市" ; 1 ; 1 ) = 1
            )
        ) or      // ○○市川市町という形で町名が川市ということもあるので場所も判断
        (
             PatternCount ( 住所 ; "市原市" ) and
            (
                 Middle ( 住所 ; Position ( 住所 ; "市原市" ; 1 ; 1 ) - 1 ; 1 ) = "県" or
                 Position ( 住所 ; "市原市" ; 1 ; 1 ) = 1
            )
        ) or      // ○○市原市町という形で町名が原市ということもあるので場所も判断
         PatternCount ( 住所 ; "今市市" ) or      // (現・日光市)
         PatternCount ( 住所 ; "八日市場市" ) or      // (現・匝瑳市)
         PatternCount ( 住所 ; "四日市市" ) or
         PatternCount ( 住所 ; "八日市市" ) or
         PatternCount ( 住所 ; "廿日市市" ) or
         PatternCount ( 住所 ; "野々市市" ) ;      // 2011.11.11

             Left (
                ADDRESS ;
                 Position ( ADDRESS ; "市" ; 1 ; 2 )
            ) ;

         // 町名に「市」が含まれる(旧住所の地名を含め他府県にも同じ町名が存在する場合は都道府県も考慮する)
         // 町名に「村」が含まれる
         PatternCount ( 住所 ; "余市郡余市町" ) or      // 北海道余市郡余市町
         PatternCount ( 住所 ; "北海道余市町" ) or
        (
             PatternCount ( 住所 ; "余市町" ) and
             Position ( 住所 ; "余市町" ; 1 ; 1 ) = 1
        ) or
         PatternCount ( 住所 ; "九戸郡種市町" ) or      // 岩手県九戸郡種市町
         PatternCount ( 住所 ; "岩手県種市町" ) or
        (
             PatternCount ( 住所 ; "種市町" ) and
             Position ( 住所 ; "種市町" ; 1 ; 1 ) = 1
        ) or
         PatternCount ( 住所 ; "芳賀郡市貝町" ) or      // 栃木県芳賀郡市貝町
         PatternCount ( 住所 ; "栃木県市貝町" ) or
        (
             PatternCount ( 住所 ; "市貝町" ) and
             Position ( 住所 ; "市貝町" ; 1 ; 1 ) = 1
        ) or
         PatternCount ( 住所 ; "中新川郡上市町" ) or      // 富山県中新川郡上市町
         PatternCount ( 住所 ; "富山県上市町" ) or
        (
             PatternCount ( 住所 ; "上市町" ) and
             Position ( 住所 ; "上市町" ; 1 ; 1 ) = 1
        ) or
         PatternCount ( 住所 ; "石川郡野々市町" ) or      // 石川県石川郡野々市町(現・野々市市)
         PatternCount ( 住所 ; "石川県野々市町" ) or
        (
             PatternCount ( 住所 ; "野々市町" ) and
             Position ( 住所 ; "野々市町" ; 1 ; 1 ) = 1
        ) or
         PatternCount ( 住所 ; "西八代郡市川大門町" ) or      // 山梨県西八代郡市川大門町(現・市川三郷町)
         PatternCount ( 住所 ; "山梨県市川大門町" ) or     
        (
             PatternCount ( 住所 ; "市川大門町" ) and
             Position ( 住所 ; "市川大門町" ; 1 ; 1 ) = 1
        ) or
         PatternCount ( 住所 ; "西八代郡市川三郷町" ) or      // 山梨県西八代郡市川三郷町
         PatternCount ( 住所 ; "山梨県市川三郷町" ) or     
        (
             PatternCount ( 住所 ; "市川三郷町" ) and
             Position ( 住所 ; "市川三郷町" ; 1 ; 1 ) = 1
        ) or
         PatternCount ( 住所 ; "芦品郡新市町" ) or      // 広島県芦品郡新市町(現・福山市)
         PatternCount ( 住所 ; "広島県新市町" ) or
        (
             PatternCount ( 住所 ; "新市町" ) and
             Position ( 住所 ; "新市町" ; 1 ; 1 ) = 1
        ) or
         PatternCount ( 住所 ; "香美郡野市町" ) or      // 高知県香美郡野市町
         PatternCount ( 住所 ; "高知県野市町" ) or
        (
             PatternCount ( 住所 ; "野市町" ) and
             Position ( 住所 ; "野市町" ; 1 ; 1 ) = 1
        ) or
         PatternCount ( 住所 ; "日置郡東市来町" ) or      // 鹿児島県日置郡東市来町(現・日置市)
         PatternCount ( 住所 ; "鹿児島県東市来町" ) or
        (
             PatternCount ( 住所 ; "東市来町" ) and
             Position ( 住所 ; "東市来町" ; 1 ; 1 ) = 1
        ) or
         PatternCount ( 住所 ; "日置郡市来町" ) or      // 鹿児島県日置郡市来町(現・いちき串木野市)
         PatternCount ( 住所 ; "鹿児島県市来町" ) or
        (
             PatternCount ( 住所 ; "市来町" ) and
             Position ( 住所 ; "市来町" ; 1 ; 1 ) = 1
        ) or
         PatternCount ( 住所 ; "吉野郡下市町" ) or      // 奈良県吉野郡下市町
         PatternCount ( 住所 ; "奈良県下市町" ) or
        (
             PatternCount ( 住所 ; "下市町" ) and
             Position ( 住所 ; "下市町" ; 1 ; 1 ) = 1
        ) or
         PatternCount ( 住所 ; "神崎郡市川町" ) or      // 兵庫県神崎郡市川町
         PatternCount ( 住所 ; "兵庫県市川町" ) or
        (
             PatternCount ( 住所 ; "市川町" ) and
             Position ( 住所 ; "市川町" ; 1 ; 1 ) = 1
        ) or
         PatternCount ( 住所 ; "氷上郡市島町" ) or      // 兵庫県氷上郡市島町(現・丹波市)
         PatternCount ( 住所 ; "兵庫県市島町" ) or
        (
             PatternCount ( 住所 ; "上市町" ) and
             Position ( 住所 ; "上市町" ; 1 ; 1 ) = 1
        ) or
         PatternCount ( 住所 ; "鹿足郡六日市町" ) or      // 島根県鹿足郡六日市町(現・吉賀町)
         PatternCount ( 住所 ; "島根県六日市町" ) or
        (
             PatternCount ( 住所 ; "上市町" ) and
             Position ( 住所 ; "上市町" ; 1 ; 1 ) = 1
        ) or
         PatternCount ( 住所 ; "阿波郡市場町" ) or      // 徳島県阿波郡市場町(現・阿波市)
         PatternCount ( 住所 ; "徳島県市場町" ) or
        (
             PatternCount ( 住所 ; "市場町" ) and
             Position ( 住所 ; "市場町" ; 1 ; 1 ) = 1
        ) or
         PatternCount ( 住所 ; "香美郡野市町" ) or      // 高知県香美郡野市町
         PatternCount ( 住所 ; "高知県野市町" ) or
        (
             PatternCount ( 住所 ; "野市町" ) and
             Position ( 住所 ; "野市町" ; 1 ; 1 ) = 1
        ) or
         PatternCount ( 住所 ; "西多摩郡五日市町" ) or      // 東京都西多摩郡五日市町(現・あきる野市)
         PatternCount ( 住所 ; "東京都五日市町" ) or
        (
             PatternCount ( 住所 ; "五日市町" ) and
             Position ( 住所 ; "五日市町" ; 1 ; 1 ) = 1
        ) or
         PatternCount ( 住所 ; "佐伯郡廿日市町" ) or      // 広島県佐伯郡廿日市町(現・廿日市市)
         PatternCount ( 住所 ; "広島県廿日市町" ) or
        (
             PatternCount ( 住所 ; "廿日市町" ) and
             Position ( 住所 ; "廿日市町" ; 1 ; 1 ) = 1
        ) or
        

         PatternCount ( 住所 ; "柴田郡村田町" ) or      // 宮城県柴田郡村田町
         PatternCount ( 住所 ; "宮城県村田町" ) or
        (
             PatternCount ( 住所 ; "村田町" ) and
             Position ( 住所 ; "村田町" ; 1 ; 1 ) = 1
        ) or
         PatternCount ( 住所 ; "佐波郡玉村町" ) or      // 群馬県佐波郡玉村町
         PatternCount ( 住所 ; "群馬県玉村町" ) or
        (
             PatternCount ( 住所 ; "玉村町" ) and
             Position ( 住所 ; "玉村町" ; 1 ; 1 ) = 1
        ) or
         PatternCount ( 住所 ; "中蒲原郡村松町" ) or      // 新潟県中蒲原郡村松町
         PatternCount ( 住所 ; "新潟県村松町" ) or
        (
             PatternCount ( 住所 ; "村松町" ) and
             Position ( 住所 ; "村松町" ; 1 ; 1 ) = 1
        ) or
         PatternCount ( 住所 ; "恵那郡岩村町" ) or      // 岐阜県恵那郡岩村町(現・恵那市)
         PatternCount ( 住所 ; "岐阜県岩村町" ) or
        (
             PatternCount ( 住所 ; "岩村町" ) and
             Position ( 住所 ; "岩村町" ; 1 ; 1 ) = 1
        ) or
         PatternCount ( 住所 ; "美方郡村岡町" ) or      // 兵庫県美方郡村岡町(現・美方郡香美町)
         PatternCount ( 住所 ; "兵庫県村岡町" ) or
        (
             PatternCount ( 住所 ; "村岡町" ) and
             Position ( 住所 ; "村岡町" ; 1 ; 1 ) = 1
        ) or
         PatternCount ( 住所 ; "東宇和郡野村町" ) or      // 愛媛県東宇和郡野村町(現・西予市)
         PatternCount ( 住所 ; "愛媛県野村町" ) or
        (
             PatternCount ( 住所 ; "野村町" ) and
             Position ( 住所 ; "野村町" ; 1 ; 1 ) = 1
        ) or

         PatternCount ( 住所 ; "富良野町" ) ;      //

             Left ( ADDRESS ; T ) ;

         // 村名に「市」が含まれる
         PatternCount ( 住所 ; "北津軽郡市浦村" ) or      // 青森県北津軽郡市浦村(現・五所川原市)
         PatternCount ( 住所 ; "青森県市浦村" ) or
        (
             PatternCount ( 住所 ; "市浦村" ) and
             Position ( 住所 ; "市浦村" ; 1 ; 1 ) = 1
        ) ;

             Left ( ADDRESS ; V ) ;

         // 町名に「町」が含まれる
         PatternCount ( 住所 ; "杵島郡大町町" ) or      // 佐賀県杵島郡大町町
         PatternCount ( 住所 ; "佐賀県大町町" ) or
        (
             PatternCount ( 住所 ; "大町町" ) and
             Position ( 住所 ; "大町町" ; 1 ; 1 ) = 1
        ) or
         PatternCount ( 住所 ; "北松浦郡鹿町町" ) or      // 長崎県北松浦郡鹿町町
         PatternCount ( 住所 ; "長崎県鹿町町" ) or
        (
             PatternCount ( 住所 ; "鹿町町" ) and
             Position ( 住所 ; "鹿町町" ; 1 ; 1 ) = 1
        ) ;

             Left (
                ADDRESS ;
                 Position ( ADDRESS ; "町" ; 1 ; 2 )
            ) ;

         // 郡名に「市」が含まれる町(北海道余市郡・奈良県高市郡)
         PatternCount ( 住所 ; "余市郡仁木町" ) or      // 北海道余市郡仁木町
         PatternCount ( 住所 ; "高市郡高取町" ) ;      // 奈良県高市郡高取町

             Left ( ADDRESS ; T ) ;

         // 郡名に「市」が含まれる村(北海道余市郡・奈良県高市郡)
         PatternCount ( 住所 ; "余市郡赤井川村" ) or      // 北海道余市郡赤井川村
         PatternCount ( 住所 ; "高市郡明日香村" ) ;      // 奈良県高市郡明日香村

             Left ( ADDRESS ; V ) ;

         // 郡名に「村」が含まれる村(福島県田村郡)
         PatternCount ( 住所 ; "田村郡都路村" ) ;

             Left (
                ADDRESS ;
                 Position ( ADDRESS ; "村" ; 1 ; 2 )
            ) ;

         // 郡名に「村」が含まれる町(山形県東村山郡・山形県西村山郡・山形県北村山郡・福島県田村郡)
         PatternCount ( 住所 ; "東村山郡" ) or
         PatternCount ( 住所 ; "西村山郡" ) or
         PatternCount ( 住所 ; "北村山郡" ) or
         PatternCount ( 住所 ; "田村郡" ) ;

             Left ( ADDRESS ; T ) ;


         // 市を優先させるもの
         PatternCount ( 住所 ; "村山市" ) or      // 山形県
         PatternCount ( 住所 ; "原町市" ) or      // 福島県(現・南相馬市)
         PatternCount ( 住所 ; "田村市" ) or      // 福島県
         PatternCount ( 住所 ; "町田市" ) or      // 東京都
         PatternCount ( 住所 ; "東村山市" ) or      // 東京都
         PatternCount ( 住所 ; "武蔵村山市" ) or      // 東京都
         PatternCount ( 住所 ; "羽村市" ) or      // 東京都
         PatternCount ( 住所 ; "十日町市" ) or      // 新潟県
         PatternCount ( 住所 ; "村上市" ) or      // 新潟県
         PatternCount ( 住所 ; "大町市" ) or      // 長野県
         PatternCount ( 住所 ; "中村市" ) or      // 高知県(現・四万十市)
         PatternCount ( 住所 ; "大村市" ) or      // 長崎県
         PatternCount ( 住所 ; "郡山市" ) or      // 福島県
         PatternCount ( 住所 ; "郡上市" ) or      // 岐阜県
         PatternCount ( 住所 ; "蒲郡市" ) or      // 愛知県
         PatternCount ( 住所 ; "大和郡山市" ) or      // 奈良県
         PatternCount ( 住所 ; "小郡市" ) or      // 福岡県
         PatternCount ( 住所 ; "向日町市" ) ; // 京都府向日市のありがちな誤り

             Left ( ADDRESS ; C ) ;


         // 区を優先させるもの
        ( PatternCount ( 住所 ; "札幌市" ) and PatternCount ( 住所 ; "区" ) ) or
        ( PatternCount ( 住所 ; "仙台市" ) and PatternCount ( 住所 ; "区" ) ) or
        ( PatternCount ( 住所 ; "横浜市" ) and PatternCount ( 住所 ; "区" ) ) or
        ( PatternCount ( 住所 ; "川崎市" ) and PatternCount ( 住所 ; "区" ) ) or
        ( PatternCount ( 住所 ; "名古屋市" ) and PatternCount ( 住所 ; "区" ) ) or
        ( PatternCount ( 住所 ; "中村区" ) ) or      // 村・町のつく区
        ( PatternCount ( 住所 ; "京都市" ) and PatternCount ( 住所 ; "区" ) ) or
        ( PatternCount ( 住所 ; "大阪市" ) and PatternCount ( 住所 ; "区" ) ) or
        ( PatternCount ( 住所 ; "神戸市" ) and PatternCount ( 住所 ; "区" ) ) or
        ( PatternCount ( 住所 ; "広島市" ) and PatternCount ( 住所 ; "区" ) ) or
        ( PatternCount ( 住所 ; "北九州市" ) and PatternCount ( 住所 ; "区" ) ) or
        ( PatternCount ( 住所 ; "福岡市" ) and PatternCount ( 住所 ; "区" ) ) or
        ( PatternCount ( 住所 ; "千葉市" ) and PatternCount ( 住所 ; "区" ) ) or
        ( PatternCount ( 住所 ; "さいたま市" ) and PatternCount ( 住所 ; "区" ) ) or
        ( PatternCount ( 住所 ; "静岡市" ) and PatternCount ( 住所 ; "区" ) ) or
        ( PatternCount ( 住所 ; "堺市" ) and PatternCount ( 住所 ; "区" ) ) or      // 2006.04.01
        ( PatternCount ( 住所 ; "新潟市" ) and PatternCount ( 住所 ; "区" ) ) or      // 2007.04.01
        ( PatternCount ( 住所 ; "浜松市" ) and PatternCount ( 住所 ; "区" ) ) or      // 2007.04.01
        ( PatternCount ( 住所 ; "岡山市" ) and PatternCount ( 住所 ; "区" ) ) or      // 2009.04.01
        ( PatternCount ( 住所 ; "相模原市" ) and PatternCount ( 住所 ; "区" ) ) or      // 2010.04.01
        ( PatternCount ( 住所 ; "熊本市" ) and PatternCount ( 住所 ; "区" ) ) or      // 2012.04.01

        ( PREF = "東京都" and PatternCount ( 住所 ; "区" ) ) or
         Left ( 住所 ; 4 ) = "千代田区" or
         Left ( 住所 ; 3 ) = "中央区" or
         Left ( 住所 ; 2 ) = "港区" or
         Left ( 住所 ; 3 ) = "新宿区" or
         Left ( 住所 ; 3 ) = "文京区" or
         Left ( 住所 ; 3 ) = "台東区" or
         Left ( 住所 ; 3 ) = "墨田区" or
         Left ( 住所 ; 3 ) = "江東区" or
         Left ( 住所 ; 3 ) = "品川区" or
         Left ( 住所 ; 3 ) = "目黒区" or
         Left ( 住所 ; 3 ) = "大田区" or
         Left ( 住所 ; 4 ) = "世田谷区" or
         Left ( 住所 ; 3 ) = "渋谷区" or
         Left ( 住所 ; 3 ) = "中野区" or
         Left ( 住所 ; 3 ) = "杉並区" or
         Left ( 住所 ; 3 ) = "豊島区" or
         Left ( 住所 ; 2 ) = "北区" or
         Left ( 住所 ; 3 ) = "荒川区" or
         Left ( 住所 ; 3 ) = "板橋区" or
         Left ( 住所 ; 3 ) = "練馬区" or
         Left ( 住所 ; 3 ) = "足立区" or
         Left ( 住所 ; 3 ) = "葛飾区" or
         Left ( 住所 ; 4 ) = "江戸川区" ;

             Left ( ADDRESS ; K ) ;

         // 市の後に町がくる場合、市を優先
         PatternCount ( 住所 ; "市" ) and
         PatternCount ( 住所 ; "町" ) and
        C < T ;
             Left ( ADDRESS ; C ) ;

         // 町の後に市がくる場合、町を優先
         PatternCount ( 住所 ; "町" ) and
         PatternCount ( 住所 ; "市" ) and
        T < C ;
             Left ( ADDRESS ; T ) ;
        
         // 市の後に村がくる場合、市を優先
         PatternCount ( 住所 ; "市" ) and
         PatternCount ( 住所 ; "村" ) and
        C < V ;
             Left ( ADDRESS ; C ) ;

         // 村の後に市がくる場合、村を優先
         PatternCount ( 住所 ; "村" ) and
         PatternCount ( 住所 ; "市" ) and
        V < C ;
             Left ( ADDRESS ; V ) ;

         // 町の後に村がくる場合、町を優先
         PatternCount ( 住所 ; "町" ) and
         PatternCount ( 住所 ; "村" ) and
        T < V ;
             Left ( ADDRESS ; T ) ;

         // 村の後に町がくる場合、村を優先
         PatternCount ( 住所 ; "村" ) and
         PatternCount ( 住所 ; "町" ) and
        V < T ;
             Left ( ADDRESS ; V ) ;

         // 市がある場合
         PatternCount ( 住所 ; "市" ) ;
             Left ( ADDRESS ; C ) ;

         // 町がある場合
         PatternCount ( 住所 ; "町" ) ;
             Left ( ADDRESS ; T ) ;

         // 村がある場合
         PatternCount ( 住所 ; "村" ) ;
             Left ( ADDRESS ; V ) ;

         // 区がある場合
         PatternCount ( 住所 ; "区" ) ;
             Left ( ADDRESS ; K ) ;

         // "町"・"村"が抜けてしまい"郡"だけがある場合
         PatternCount ( 住所 ; "郡" ) ;
             Left ( ADDRESS ; G ) ;

    )
    ] ;
    
     // 区制をひいてる市で市名が抜け町域名に"町"や"村"があるとそちらを優先してしまうため
    Case (
         PatternCount ( TMP ; "区" ) ;
             Left ( ADDRESS ; K ) ;
            
            TMP
    )
)

エンコードは Unicode (UTF-8)、改行タイプは LF (Unix) 形式のテキストとして保存します。
テキストエディタで正常に開かない場合は、エンコードを指定してファイルを開くようにしてください。

詳細説明

住所から市区郡町村名を返します。
町村の場合は、郡を含む町または村まで。政令指定都市の場合は区までを市区郡町村名とします。
市区郡町村名に「市」「町」「村」「郡」が含まれる市区町村があらたにできた時には計算式の変更が必要となります。
2011.11.11 現在

この関数が使用する他のカスタム関数

この関数を使用する他のカスタム関数

注意:ここで紹介されているカスタム関数をご自分のシステムに組み込んだ場合に発生した問題についてはFMPro.infoは責任を負いません。

Copyright © 2004-2009 FMPro.info All Rights Reserved.