[FileMaker]集計フィールドとレイアウトでクロス集計結果を出力する

#初めに
本項はファイルメーカーで簡単にクロス集計結果を表示＋ファイル出力するためのHoW Toです。


#クロス集計とは
２つのデータ項目に注目して同時に集計する作業をクロス集計といいます。
有名なものではエクセルのピボットテーブルがあります。
行と列にそれぞれデータ項目を設定し、項目ごとの集計を行います。
※ここでいう集計は、合算（SUM）だけでなく最大値（MAX）、最小値（MIN）等、特定のデータ集合を演算した結果になります。

ネットで検索するとファイルメーカでクロス集計機能を実現する方法はいくつかあるみたいですが
私がよく利用する簡単な方法を記載したいと思います。


#説明のための準備
以下のようなデータをサンプルとして用意しました。
![表.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/300537/7f8bdaef-25cf-6756-65f3-f847f06c693d.png)

以下、顧客番号毎に税抜き合計金額、消費税額、税込合計金額の合算を集計しエクセル書き出しするまでの手順を紹介します。

#作業
###フィールドの準備
データ項目のフィールドとは別に、
税抜き合計金額、消費税額、税込合計金額の集計フィールドを用意します。
この例ではs_税抜き合計金額、s_消費税額、s_税込合計金額という名前で
合計集計フィールドを作成しています。


![2019-12-17_17h30_50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/300537/462d96b6-f936-ca76-1cee-5e914fe6d88a.png)

ちなみに、ここで集計フィールドのタイプを合計以外のものを設定すると、集計内容を切り替えることができます。（平均値、カウント、標準偏差等）

###※参考
ファイルメーカで対応可能な集計内容です。（公式からキャプチャ）
![2019-12-18_09h20_30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/300537/1e91afde-1b44-64de-e189-2af3a162cbd3.png)


###レイアウトの作成
新規レイアウトを作成して、「コンピュータ」→「リスト」の形式で
レイアウトを作成する。

###ボディ部分のパート設定

パートの設定の内容を「小計ソート 対象」とし、
顧客番号を対象として設定する。

![2019-12-17_17h46_22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/300537/dfbe789a-dd34-c15f-9f07-9f4a17510a9c.png)

「小計ソート 対象部分」のパートに
集計対象のキーとなる顧客番号、集計を取りたい集計フィールドを追加する。
このケースでは、顧客番号、s_税抜合計、s_消費税額、s_税込合計を設定します。

![2019-12-17_18h08_14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/300537/7e4f7bb7-3fbe-0864-9b64-1c1f8c108008.png)

内容を確認するため、ブラウズモードに切り替えます。
この段階では、なにも表示されません。


###スクリプトでソートを実行する。

「小計ソート 対象部分」のパート表示を有効にためには、集計基準のフィールドでソートをする必要があります。

![2019-12-17_18h31_03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/300537/87eed2e2-85ce-5f70-5461-d521ee98a54f.png)


スクリプトを用意し、顧客番号でソートが簡易にできる状態を作成します。
![2019-12-17_18h24_17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/300537/37dfb886-d31a-8791-7845-21f43cc5f4a1.png)


ソートを実行すると、各顧客番号毎で集計した金額が表示されていると思います。
![2019-12-23_13h52_50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/300537/04d86c00-823e-3ec7-4eb4-e52ccb262e0d.png)


###クロス集計結果の出力
表示した結果をエクセルに書き出すために
スクリプトで、レコードのエクスポートを設定します。
・出力ファイルの指定は自由に設定してください。
・エクスポート順の指定を開いてください。

![2019-12-17_18h41_16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/300537/0c1fb4f3-d121-d093-d4c3-79aa3b31138c.png)

エクスポート順の指定が開いたら、「グループ化の基準」に顧客番号を追加してください。
※ソートを実行していないと「グループ化の基準」は表示しません。
今回のケースでは、顧客番号でソートがかかっている場合に「グループ化の基準➡顧客番号」が表示されます。
逆に、パート設定「小計ソート 対象部分」がなくても、「グループ化の基準」を基にした書き出しすることができますが
集計結果の表示のため、パート設定を用意しておいたほうが無難です。

その後、対象の集計フィールドを追加します。
(顧客番号、s_税抜合計金額、s_消費税額、s_税込合計金額)

![2019-12-17_18h45_32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/300537/713c0f1b-aa1a-c9bf-772e-ecc50282f24b.png)

この時、集計フィールドを追加すると自動的に２つのフィールドが追加します。
①集計フィールド名
②集計フィールド名＋基準顧客番号

①は不要ですので削除してください。

最終的に、以下のように設定します。
![2019-12-17_18h49_23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/300537/05ba42b3-a606-456a-6601-caad13bbda0a.png)


作成したエクスポートスクリプトを実行してください。
クロス集計した結果がエクセルで出力されたかと思います。
![2019-12-18_09h59_18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/300537/317b30ed-a003-36f8-3b5c-7d947d4b2cf5.png)

作成したソートのスクリプトとエクスポートのスクリプトを組み合わせたボタンを用意して
ソート→エクスポートを実行できるようにすると使いやすいと思います。


以上、説明を終わります。

#最後に
私自身がファイルメーカを触りだしたころに、エクセルのSUMIF関数やCOUNTIF関数、ピボットテーブルと同等のことができない！と思い込みエクセルに書き出ししてから、集計作業を実施していました。
レイアウトの用意が必要になりますが、定期的な集計作業が発生する場合には、
今回のようなレイアウトを１レイアウト用意しておくと便利かと思います。
集計フィールドと同じく、絞り込みの状態が集計結果に反映されるため、
月ごとの集計、特定商品のみの集計が同じ仕組みで対応可能です。
（表示内容、エクスポート内容は見直す必要があるかもしれませんが。）

熟練したファイルメーカエンジニアの方には、お目汚しの内容かと思いますが参考になった方がいたら幸いです。