みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
お世話になります。
環境はFMP12、win8です。
条件付き書式でAとBのフィールドを比較して値がA>Bとなったら色を変えて表示したいです。
このAとBは同じフィールドで繰り返しを定義しています。
Aは[1]、Bは[2]というようにです。
このAとBはドロップダウンの値一覧で「5、4-、4、3、3-、2、1」
というような数字を充てて選択するようになっています。
私がやりたいのは、例えば4-と4を比較したときに4の方が上になるように定義したいのですが、条件付き書式で充てている値の順位付けの定義をする方法はあるのでしょうか?
分かりにくいければ追記させてもらいます。
よろしくお願い致します。
前提として、AとBは、同回数の繰り返しテキスト(4-は数字ではナイ)フィールドで
条件付き書式を設定するフィールドも同回数の繰り返しフィールドであるものとして、
その条件式は、
Evaluate(Substitute(A; ["-";"-0.1"])) > Evaluate(Substitute(B; ["-";"-0.1"]))
Offline
まさか数字フィールではないとは思うけど
数字フィールドにも 3- は入力可能だから
その場合は、下の式の成立するかと思います。
Let(
[ $a=A;
$a=Case(PatternCount ( $a ; "-" );$a*-1;$a);
$b=B;
$b=Case(PatternCount ( $b ; "-" );$b*-1;$b)
] ;
$A>$B
)
Offline
Evaluate(Substitute(A; ["-";"-0.1"])) > Evaluate(Substitute(B; ["-";"-0.1"]))
僭越ですが
Evaluate(Substitute(A; ["-";"*-1"]))> Evaluate(Substitute(B; ["-";"*-1"]))
でないかと思うのですが。
私の前の式よりうんと簡単で(感服)
テキストでも数字でもいけてます
私の前の式も、テキストでもいけてます。
FMP12 MacOS Sierraで確認
Offline
> AとBは同じフィールドで繰り返しを定義しています
ですから、一つの繰り返しフィールドということでは。
繰返しフィールドをFとすると
A = F[1]
B = F[2]
ということ?
この場合、繰り返しは二回と考えていいのでしょうか?
> ドロップダウンの値一覧で「5、4-、4、3、3-、2、1」
この大小は
5 > 4 > 4- > 3 > 3- >・・・・
ということですよね。
とするとシャチさんの考えとは異なることになりますね。
Offline
あ〜〜〜ぁ 想定外でした。
とすると、現時的にどんな比較なんだろう?
繰り返し位置がずれたら、計算式たいへんだぁ・・・
Offline
> #3 シャチさん
AとBは同数とは限らないので、4- > 3 が真となる変換が必要がなあと?
意図する降順は私が察するに、
5>4>4->3>3->2>1
> #4 シャチさん
私の式の意図は、「-0.1」だからこそ成立するものです。(選択数字は整数だけを利用)
「ー」はマイナスではなく、格付け記号のようなものと理解しています。
Last edited by Hiro (2017-01-12 12:12:47)
Offline
>
AとBは同数とは限らないので、4- > 3 が真となる変換が必要がなあと?
ご説明ありがとうございます。
想定していないことばかりで、困惑。
単なる 2フィールドの比較ではない?
ということですか?
でも、元主 何をしようと? 意図がつかみにくいなぁ。
****
今読み返して
なんとか理解。でも
単純に 4と4ーはマイナス記号あるなしの比較 4ーと3はマイナス記号とっての比較 ?
本当の並びは
「5、、4、4-、3-、3-、2、1」
で5が最上位ということなんですか?
あ〜〜ぁ また恥かきだなぁ。
Last edited by シャチ (2017-01-12 12:23:41)
Offline
このAとBは同じフィールドで繰り返しを定義しています。
Aは[1]、Bは[2]というようにです。
質問者の意図を#2式は勘違いしてました。
#5チポさんが言われるように繰り返しフィールドは1つでその回数が2回としたときの式は、
Evaluate(Substitute(繰り返しフィールド[1]; ["-";"-0.1"])) > Evaluate(Substitute(繰り返しフィールド[2]; ["-";"-0.1"]))
Offline
考え方を変えて、一覧の表示順位を比較する方法なら、
Let([
#値一覧=List(5;4;"4-";3;"3-";2;1);
#AB一覧=List(繰り返しフィールド)
];
FilterValues(#値一覧; #AB一覧) = FilterValues(#AB一覧; #AB一覧)
)
Offline
他には、Positionで位置を比較すればいい。値一覧の順と大小順が違うんですかね。
皆さんご回答をいただきありがとうございます。
情報不足で申し訳ありませんでした。
繰り返しフィールドは1つで回数は6回を定義しています。
繰り返し6回をどのように比較するのでしょうか?
最初の説明では
1回 > 2回
だけでしたが、他の回数とはどのように?
Last edited by チポ (2017-01-13 09:09:32)
Offline
4-と4を比較したときに4の方が上
なら値一覧も
「5、4-、4、3、3-、2、1」
ではなく
「5、4、4-、3、3-、2、1」
じゃないのかなあ?
-が付く方が下という比較は、
F[1]&"A">F[2]&"A"
のように-より大きい文字コードの文字を連結して比較してもよいでしょう。
繰り返しの順に大きくなるように値が入ってなかったらそこを警告、というようなことかな?
> 繰り返しフィールドは1つで回数は6回を定義しています。
後出しジャンケンでしかも更に疑問が拡大してますネ。
また類推しなくては成りませんが、
もし、6回繰り返しへの入力順(前後関係)が「5、4、4-、3、3-、2、1」の
序列に成っているかを判別するなら、#10の判別式がそのまま有効です。
※判別基準が「前項>後項」で、重複入力値の場合「4>4」は「否」が返ります。
重複入力も判別、即ち、判別基準が「前項>=後項」の場合は、複雑になりそうなので、
質問者の回答再説明を待って、質問内容が確認できてから考えてみます。
Last edited by Hiro (2017-01-13 11:31:33)
Offline
Pages: 1
[ Generated in 0.006 seconds, 8 queries executed - Memory usage: 533.91 KiB (Peak: 554.45 KiB) ]