みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
FM12の初心者です。
FMからデータを取出してEXCELで加工しています。
それを中止しFMでできないか相談がありました。
そのために、例えば下記関数をEXCELで利用していますが、FMで設計できないでしょうか。
=IF(SUM(H8:H13)=600,1,0)
H8:H13 の部分は次のレコードでは
H9:H14 で、次は H10:H15 へと順次変わっていきます。
宜しくお願い致します。
どのセルの計算式かにもよりますが
GetNthRecord(H;Get(レコード番号)+調整)
のようにして1セル分参照できます。5個を+で連結してSUMの代わり。
IFのとこは同じ。
FM → Excel → FM なら、詰まるところ FM内処理だけで済むのだから、FMのデータ構成と遣りたいことを説明して貰った方がより具体的解答が付きそうな?
それと、「If(論理式; 1; 0)」は単に「論理式」だけと等価です。
Offline
>=IF(SUM(H8:H13)=600,1,0)
この式が入っているセルの番号は○8、それとも○13ですか?
Offline
どのセルの計算式かにもよりますが
GetNthRecord(H;Get(レコード番号)+調整)
のようにして1セル分参照できます。5個を+で連結してSUMの代わり。
IFのとこは同じ。
この式でEXCELと同じ値になりましたが、これで良かったのでしょうか。
If (GetNthRecord (Hフィールド; Get ( レコード番号 ) -1)
+ GetNthRecord (Hフィールド; Get ( レコード番号 ) -2)
+ GetNthRecord (Hフィールド; Get ( レコード番号 ) -3)
+ GetNthRecord (Hフィールド; Get ( レコード番号 ) -4)
+ GetNthRecord (Hフィールド; Get ( レコード番号 ) -5)
+ Hフィールド
=600;1;0)
厄介な式があります。データ全体の式です。
同じ様に式を繰り返すことはできません。
良い方法はないでしょうか。
If(MAX(D7:D9000)D4,1,0
If(SUM(D7:D9000)0,1,0
目的はFMデータを傾向管理に利用できないか検討することになりました。
取出しデータをEXCELで加工し色々検討中です。
又、傾向管理後のデータは最終的にはFMに保存したいと考えています。
傾向管理の担当者より計算は、FMでできないか相談がありましたので、問い合わせしました。
FMでできるとスピードアップになると考えています。
宜しくお願い致します。
リレーションで集計できますヨ
レコードの並び順にシリアル番号を振って、
さらに計算フィールドを作り、(仮にシリアルaとします)
その計算式
シリアル - 5
として、リレーションを
シリアル >= シリアル
and
シリアルa <= シリアル
と定義。
これで
Sim(リレーション::H)
が以前6レコードの合計です。
MAX(D7:D9000)
これはリレーションを
シリアル X シリアル
とすれば全てのレコードが照合されます。
Offline
5個じゃなく6個でしたね...
Ifは不要という指摘がありますのでそれも取り入れてみては。
全体の最大と合計は、集計フィールドを追加。
でも値と比較するなら自己リレーションをXで設定して関数にした方がいいかも。
D4は、多分グローバルフィールドですね。
H列のテーブル名::フィールド名を TBL::H として、
H8:H13 の結果を13の行に表示する式
H列は空白は0に、計算値自動入力 If ( IsEmpty ( Self ) ; 0 ; Self ) 既存値置き換え、常に評価
Let([$$Nlist = ExecuteSQL ( "Select \"H\" From \"TBL\"" ; "" ; "" );
Tsum=MiddleValues ( $$Nlist ; Get ( レコード番号 ) - 5 ; 6 ) & 0];
Case ( Get ( レコード番号 ) < 6 ; "" ; Evaluate(Substitute( Tsum ; ¶ ; "+" ))) = 600
)
DMAXの式は
ExecuteSQL ( "Select Max (\"D\") From \"TBL\"" ; "" ; "" )
とか。
ただしDフィールドを エクセルのようにD1:D6 を除外とかはできないので一工夫を。
Last edited by keima (2014-05-14 17:55:58)
Offline
keima様
サンプルまで作成いただき有難うございます。
見たこともない関数なのであり大変びっくりしております。
理解に時間が掛かりそうです。
チポ様
tim様
具体的にはどの様にすれば良いのでしょうか。
すみません。初心者なので理解できなくて。
んん、
私のレスのどこが分りませんか?
リレーションの設定と、
計算フィールドを定義するだけですが。。
Offline
チポさんのリレーションを使った式が一番すっきりしていて
関数の使い方もFMらしく、こちらがお勧めです。
Offline
Pages: 1
[ Generated in 0.023 seconds, 9 queries executed - Memory usage: 522.18 KiB (Peak: 527.09 KiB) ]