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

ValuePosition 関数

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

概要

<検索テキスト>が値(改行で区切られたテキスト)の中で何番目かを数字で返します。

構文

ValuePosition ( 値 ; 検索テキスト )

引数

引数名タイプ備考
テキスト改行で区切られたテキスト北海道
青森県
岩手県
宮城県
秋田県
山形県
福島県
検索テキストテキスト 秋田県

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

ValuePosition ( "北海道¶青森県¶岩手県¶宮城県¶秋田県¶山形県¶福島県" ; "秋田県" )

結果

5

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

    カスタム関数    ValuePosition ( 値 ; 検索テキスト )

    <検索テキスト>が値(改行で区切られたテキスト)の中で何番目かを数字で返します。
    <検索テキスト>の大文字小文字は区別されません。

modified: chamo 2015.11.05    大文字小文字を区別する場合の式をコメントの中に追加
=============================================================*/


Case
(
    not IsEmpty ( 検索テキスト ) ;
        PatternCount (
            Left (
                ¶ & 値 & ¶ ;
            
    Position (
                    ¶ & 値 & ¶ ;
                    ¶ & 検索テキスト & ¶ ;
                    1 ;
                    1
                )
            ) ;
            ¶
        )
)

/*
大文字小文字の区別が必要な場合
再帰を利用して、Exact で比較して値を返すように下記の式を利用してください。

Let (
    [
    ~valueCount = ValueCount ( 値 ) ;
    $~i = $~i + 1
    ] ;

    Case (
        // 値一覧の数を超えた場合や、値一覧に値が含まれていない場合は終了( FilterValues は大文字小文字を区別しないので目安として)
        IsEmpty ( FilterValues ( 値  ; 検索テキスト ) ) or
        $~i > ~valueCount ;
            Let ( $~i = "" ; "" ) ; // 変数をクリア

        // Exact で大文字小文字も一致した場合はカウンターの数字を返す
        Exact ( 検索テキスト ; GetValue ( 値 ; $~i ) ) ;
            GetAsNumber ( $~i  ) &
            Let ( $~i = "" ; "" ) ; // 変数をクリア


        // 一致しなかったら再帰
            
ValuePosition ( 値 ; 検索テキスト )
    )

)

*/

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

詳細説明

<検索テキスト>が値(改行で区切られたテキスト)の中で何番目かを数字で返します。

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

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

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

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