sek plus+

保存食系ブログ

[Filemaker]同じレコード内の複数のフィールドを照合し、ユニークな値のみ表示させる(GetValue関数)

商品を入力するフィールドが8つあり、
そのフィールド内で重複する商品がある場合、
ユニークな商品の値だけ表示させることが出来ます。


入力しているフィールド=商品1.商品2.商品3......商品8

です。


★1.登場する商品の回数をカウントする

1回しか出てこない商品のみを表示させるので、回数をカウントします。

・商品1の回数
これは、かならず表示させる値になるのでカウント不要。

・商品2の回数(計算フィールド)
If ( IsEmpty ( 商品2 ) ; "" ;
If ( 商品2 = 商品1 ; "2" ; "1" ) )

以下、同様に書いていきます。
複数回でてくる場合は、1以外ならなんでもいいので、すべて「2」としております。

・商品8の回数
If ( IsEmpty ( 商品8 ) ; "" ;
If ( 商品8 = 商品1 ; "2" ;
If ( 商品8 = 商品2 ; "2" ;
If ( 商品8 = 商品3 ; "2" ;
If ( 商品8 = 商品4 ; "2" ;
If ( 商品8 = 商品5 ; "2" ;
If ( 商品8 = 商品6 ; "2" ;
If ( 商品8 = 商品7 ; "2" ; "1" ) ) ) ) ) ) ) )


★2.登場回数が1回しかない商品を一つのフィールド(計算フィールド)にまとめる。

商品ALL(計算フィールド)=

商品1 &
If ( 商品2の回数 = "1" ; "¶" & 商品2 ; "" ) &
If ( 商品3の回数 = "1" ; "¶" & 商品3 ; "" ) &
If ( 商品4の回数 = "1" ; "¶" & 商品4 ; "" ) &
If ( 商品5の回数 = "1" ; "¶" & 商品5 ; "" ) &
If ( 商品6の回数 = "1" ; "¶" & 商品6 ; "" ) &
If ( 商品7の回数 = "1" ; "¶" & 商品7 ; "" ) &
If ( 商品8の回数 = "1" ; "¶" & 商品8 ; "" )


ポイントは改行して集約すること。



★3.上記2のフィールドから順番に商品を切り出す。
商品1...8だとややこしくなるので、商品A.B.C...Hというフィールド名にします。

・商品A=商品1

・商品B=GetValue ( 商品ALL ; 2 )

GetValue関数を使うことで、改行されたフィールドから値を取得できます。
以下、同様で、

・商品H=GetValue ( 商品ALL ; 8 )



以上です。