みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
OS:[win7]
FileMaker Ver:[15]
いつもお世話になっております。クロス集計のグラフ作成でご教授お願いいたします。
顧客ごとに10年分の売り上げデーターをクロス集計で作成しました。これをグラフ化すると全ての合計ではできるのですが、顧客ごとに一つのグラフ表示するにはどうすればよいでしょうか?
イメージ
2001 2002 2003 2004 2005 2006 2007 2008 2009 2010
顧客1 (金額合計の繰り返しフィールドにて各年ごとの集計表示)
顧客2
顧客3
顧客4
合計 (後部総計)
顧客の各年データーは、集計項目をソート対象とする小計(後部)で集計しております。
年は繰り返しフィールドで設定しております。
グラフのX軸は、List ( 年 ) ※10回の繰り返しフィールド
グラフのY軸は、List ( 金額合計 ) ※10回の繰り返しフィールド
データーソースは、現在のレコード(区切りデータ)
こうすると、上記の「合計 (後部総計)」がグラフにできます。それを、Y軸に顧客の年毎のデーターを表示したいのですが?
この場合は4つの線グラフですが、実際は顧客数だけのグラフになります。
説明不足の点もありますが、どうかよろしくお願いいたします。
>こうすると、上記の「合計 (後部総計)」がグラフにできます。
ですから、Y軸は後部総計をListしているのでは?
個々の「各年ごとの集計表示」のフィールドをListにして
グラフをボディに置けばいいのでは?
こういう意味ではない?
Offline
旅人様
返信ありがとうございます。
Y軸は金額合計で小計フィールドと後部総計共に同じになります。
ボディに置いて小計フィールドをY軸に指定する方法が知りたいのです。
どうかよろしくお願いします。
訂正です。
ボディにグラフを置くと、個々の小径はできますが、全部まとめたグラフを作成したいのです。
ヘッダーに置くと全体になりますし.レイアウトを別にしても結局ここの小計を指定する方法が分かりません
何処に置いて作成すればよろしいでしょうか?
よろしくお願いします。
>顧客の各年データーは、集計項目をソート対象とする小計(後部)で集計しております。
ここが違うけど(リレーション集計)
結果的にはこういうことではないのかな?
http://pupld.net/21/161105/4zigkgb9rv/index.cgi
集計グラフ.fmp12
Offline
旅人様
返信ありがとうございます。
言われますように、添付のファイルまではできます。したいことは、顧客A とBを同じグラフに表示したいのです。
グラフをいくつも表示するのではなく、一つのグラフでいくつもの顧客を表示させたいのです。
添付を工夫すれば、できるのでしょうか?
どうかよろしくお願いいたします。
そういうことでしたか・・・
集計表の縦と横の項目を逆にするのが簡単かな?
そのままでもリレーション追加でできるかも。
あとで試してみます。
Offline
旅人様
ご理解ありがとうございます。できるようでしたら、顧客数は開始の年により異なりますのでフレキシブルな方法でお願いいたいたします。
こんなのではダメかな。
5人分までしか無いサンプル
http://pupld.net/14/161107/26di9euak1/index.cgi
Offline
旅人様
サンプルありがとうございます。できることがわかりました。
自分のやっていることに当てはめてできるかどうか試してみます。
旅人様
サポートありがとうございます。結果としまして、自分のやり方ではできないことがわかりました。
理由:
年の抽出は、月、四半期、年、5年を計算で行っています。そのフィールドをリレーションで選択すると同じテーブルでSumの集計ができません
同様に、顧客名もいろいろな項目が選択できるようにグローバルでフィールドを選択したフィールドを使用しているため、5つ限定の設定方法がわかりません。
リレーションでの集計で年=計算で抽出した期間を集計する方法、と 顧客=グローバルで設定した項目をフレキシブルに選択する方法を
何とか、できる方法がないでしょうか?
どうかよろしくお願いいたします。
>リレーションでの集計で年=計算で抽出した期間を集計する方法
サンプルと同じですが、元データテーブルで
データT データT2
年 = 年
顧客名 = 顧客名
で自己リレーションすると、Sum(データT2::数量?)で顧客・年ごとに同じ合計が出ます。
これをグラフテーブルの年と顧客名繰り返しでLookupします。
グラフテーブルの年レコードは
グラフテーブルにグローバル開始年とグローバル終了年フィールドを作って
これとデータテーブルを期間リレーションして、データテーブルに関連レコード移動
するとその期間内のデータに絞られるので、この元テーブル::年をグラフテーブルに
インポートします。
顧客名繰り返しはグローバルチェックボックスでその期間中の顧客の動的値一覧を作って
選択するとGetvalue(動的顧客一覧;Get(計算式繰り返し位置番号))で出ます。
このままではチェックした順に繰り返しに入りますが。
Offline
旅人様
何度もお手数をおかけし申し訳ございません。
調べてみたのですが、非保存の計算フィールドではリレーションを組めない様子です。
上で申しあげております詳細を記載しますと、年といいますのが、
グローバルのテキスト「g期間」で月、四半期、年、5年を選択します。
その上で、当てはまる「所属期間」フィールドの計算を
Let ( [Label=g期間;TodayA=納入日;TodayB=g基準日;
D=Day(TodayA);
M=Month(TodayA);
Q=If ( M = 1 ; 2 ; If ( M < 5 ; 3 ; If ( M < 8 ; 4 ; If ( M < 11 ; 1 ; 2 ) ) ) );
Y=Year(TodayA);
A=Year(TodayB);
MM=Date(M;1;Y);
QQ=Date(Q;1;Y-If ( M<8 ;1));
YY=Date(8;1;Y-If ( M<8 ;1));
AA=Date(8;1;A+Div ( (Y-If ( M<8 ;1)-A) ; 5 ) * 5)];
Case(
Exact( Label;"5年" );AA;
Exact( Label;"年" );YY;
Exact( Label;"四半期" );QQ;
Exact( Label;"月" );MM))
で行っております。これを「年」フィールドで説明しておりましたが、実際では「所属期間」になります
同様に、顧客名といいますのが、テーブル内のフィールドをフレキシブルに選択するためグローバルで「g項目」を選択し
GetField ( GetField ("g項目"))
で計算したフィールド「集計項目」を使用しております。
両方ともに、非保存の計算フィールドを使用しておりますのでリレーションによる計算ができないのですが、これを可能にする方法はありますか?
もしくは別の方法で集計する方法があるでしょうか?
お手数ばかりおかけし申し訳ございませんが、ご教授よろしくお願いいたします。
旅人様
いろいろ悩みましたが、何とかできました。
計算フィールドからテキストフィールドにして、上記の式をスクリプトで全置換することでリレーションができました。
そして、旅人様から頂いたサンプルを応用することでグラフの作成もできました。
どうもありがとうございました。
Pages: 1
[ Generated in 0.005 seconds, 8 queries executed - Memory usage: 550.52 KiB (Peak: 571.42 KiB) ]