みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
FM13,Win7
FMをメモ代わりに使用しており、フィールドに入力→繰り返しフィールドに分散、いくつ書き込んだかを表示させています。
ただ、重複がやはり出てきますので、それもいくつ重複があるかを確認したいと思います。それが自分にとってよく使う商品名とわかるので残してます。
フィールドA(テキスト)
フィールドB(テキスト、繰り返し)
フィールドC(計算、Count(フィールドB))
フィールドD「重複分を数えたい」
例えば、フィールドAに
りんご
みかん
ぶどう
りんご
であれば、フィールドC=4、フィールドD=1と出るようにしたい。
ただ、
りんご
りんご
りんご
という場合は、フィールドD=2となるようにも。
このように出来るでしょうか?
調べても、重複分を消す参考資料はあれど、数えるものが見つかりませんでした。
よろしくお願いします。
Offline
重複しない計算結果をEに入れたとして、
ValueCount(A)-ValueCount(E)
ですよね。
Eは「参考資料」でできるんですよね。
FM13ならExecuteSQLかな。
りんご
りんご
みかん
みかん
みかん
とかの場合は?
他にもいろいろありそう?
お返事ありがとうございます。
>重複しない計算結果をEに入れたとして、
>ValueCount(A)-ValueCount(E)
そうなりますね。
>FM13ならExecuteSQLかな。
ExecuteSQLですか、存在しかしらずで、まだ使ったことない機能ですね。
少し調べてみます。
>とかの場合は?
その場合は、重複のフィールドD=3になればありがたいです。
りんご、りんご、で+1。みかん、みかん、みかん、で+2。計3に。
2種類まで出来れば、十分すぎるかと。
青森のりんご、長野のりんご、のようなものは別物扱いにしています。そこまで見ようとすれば大変ですから。
Offline
ValueCount(A)-ValueCount(E)
で行けそう。
ExecuteSQLを調べて頑張ってみます。
難しそうに見えましたが、出来るかな・・・
timさん、Travellerさん、ありがとうございました。
Offline
再帰式で求める方法。(ただし、フィールドAの行数は290行以下に限定。超える場合は式調整が必要)
Let([
$lst=フィールドA;
$vl="";
$fnc="Case(
valueCount($lst)=0; $vl;
Let([
$itm=GetValue($lst;1);
$vl=List($vl; Case(IsEmpty(FilterValues($vl;$itm));$itm));
$lst=MiddleValues($lst;2;ValueCount($lst))
];Evaluate($fnc))
)"
];
ValueCount(フィールドA) - valueCount(Evaluate($fnc))
)
Offline
データがレコードじゃないからExecuteSQLは不適ですね..
Pages: 1
[ Generated in 0.010 seconds, 9 queries executed - Memory usage: 558.34 KiB (Peak: 582.21 KiB) ]