初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2018-01-19 16:56:39

bottun
Member

GetRepetitionの逆

関数について質問があります。

フィールド「郵送入札値」は10個の値で繰り返すように定義され、2500,1200,1500の値が含まれています。
GetRepetition ( 郵送入札値 ; 2 )は、1200を返します。

この逆で、1200が何個目の繰り返し番号にあるかを知りたいとき、どのように求めたらいいでしょうか。

ご教示のほどお願いいたします。

Offline

#2 2018-01-19 18:09:56

Hiro
Member

Re: GetRepetitionの逆

ループ計算式で求める式例。
結果は繰り返し位置番号のリストを返します。
ただし、繰り返し内の値は連続していて中間空白は無いものとします。


Let([
   $lst=List(繰り返しフィールド);
   $kwd="キーワード";
   $i=0;
   $res="";
   $fnc="Case($i=ValueCount($lst); $res;
      let([
         $i=$i+1;
         #add=Case(GetValue($lst;$i)=$kwd; $i);
         $res=List($res; #add)
      ]; Evaluate($fnc))
   )"
];
   Evaluate($fnc)
)

Last edited by Hiro (2018-01-19 20:32:34)

Offline

#3 2018-01-19 23:44:52

Hiro
Member

Re: GetRepetitionの逆

【補足】
繰り返しフィールド内に空欄コマがあっても
正しい位置番号を返す式を補足します。
※ 逆に言うと、空白「""」をキーワードに指定すれば、
    空欄位置も取得できます。

Let([
   $kwd="キーワード";
   $i=0;
   $isEnd=0;
   $res="";
   $fnc=
      "Case($isEnd; $res;
         Let([
            $i=$i+1;
            $isEnd=Not(IsValid(繰り返しフィールド[$i+1]));
            #add=Case(繰り返しフィールド[$i]=$kwd; $i);
            $res=List($res; #add)
         ]; Evaluate($fnc))
      )"
];
   Evaluate($fnc) & Left(List(繰り返しフィールド); 0)
   /* ※ Left(・・・; 0) 部分は自動更新再計算の発火トリガ目的のダミー式 */
)

Last edited by Hiro (2018-01-22 23:56:45)

Offline

#4 2018-01-22 09:51:44

bottun
Member

Re: GetRepetitionの逆

ご丁寧にありがとうございます。
作っていただいた例を元に試してみたいと思います。

Offline

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 555.27 KiB (Peak: 588.37 KiB) ]