みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
お世話になります。
ファイルメーカーPro11 Win7を利用しています。
調査データの報告書作成日(1ヶ月)で絞り、都道府県の集計をとりたいと考えています。
物件データ(10万件)
・ID
・物件名
・住所
・都道府県(計算より算出)※1
・報告書作成日
このような票を作りたいと思ってます。
都道府県 件数
・北海道 10件
・青森県 25件
・秋田県 8件
・ ・
・ ・
・ ・
・沖縄県 1件
・合計 3200件
自己連結リレーションをしてCountをつかたり、
集計でつっくてみましたが、件数が出なかったりと
できませんでした。初心者ですのでご指導お願いいたします
=====================
※1
Let (D = 住所 ;Case (
Left ( D ; 3 )="北海道" ; "北海道";
Left ( D ; 3 )="青森県" ; "青森県";
Left ( D ; 3 )="岩手県" ; "岩手県";
Left ( D ; 3 )="宮城県" ; "宮城県";
Left ( D ; 3 )="秋田県" ; "秋田県";
Left ( D ; 3 )="山形県" ; "山形県";
Left ( D ; 3 )="福島県" ; "福島県";
Left ( D ; 3 )="茨城県" ; "茨城県";
Left ( D ; 3 )="栃木県" ; "栃木県";
Left ( D ; 3 )="群馬県" ; "群馬県";
Left ( D ; 3 )="埼玉県" ; "埼玉県";
Left ( D ; 3 )="千葉県" ; "千葉県";
Left ( D ; 3 )="東京都" ; "東京都";
Left ( D ; 4 )="神奈川県" ; "神奈川県";
Left ( D ; 3 )="新潟県" ; "新潟県";
Left ( D ; 3 )="富山県" ; "富山県";
Left ( D ; 3 )="石川県" ; "石川県";
Left ( D ; 3 )="福井県" ; "福井県";
Left ( D ; 3 )="山梨県" ; "山梨県";
Left ( D ; 3 )="長野県" ; "長野県";
Left ( D ; 3 )="岐阜県" ; "岐阜県";
Left ( D ; 3 )="静岡県" ; "静岡県";
Left ( D ; 3 )="愛知県" ; "愛知県";
Left ( D ; 3 )="三重県" ; "三重県";
Left ( D ; 3 )="滋賀県" ; "滋賀県";
Left ( D ; 3 )="京都府" ; "京都府";
Left ( D ; 3 )="大阪府" ; "大阪府";
Left ( D ; 3 )="兵庫県" ; "兵庫県";
Left ( D ; 3 )="奈良県" ; "奈良県";
Left ( D ; 4 )="和歌山県" ; "和歌山県";
Left ( D ; 3 )="鳥取県" ; "鳥取県";
Left ( D ; 3 )="島根県" ; "島根県";
Left ( D ; 3 )="岡山県" ; "岡山県";
Left ( D ; 3 )="広島県" ; "広島県";
Left ( D ; 3 )="山口県" ; "山口県";
Left ( D ; 3 )="徳島県" ; "徳島県";
Left ( D ; 3 )="香川県" ; "香川県";
Left ( D ; 3 )="愛媛県" ; "愛媛県";
Left ( D ; 3 )="高知県" ; "高知県";
Left ( D ; 3 )="福岡県" ; "福岡県";
Left ( D ; 3 )="佐賀県" ; "佐賀県";
Left ( D ; 3 )="長崎県" ; "長崎県";
Left ( D ; 3 )="熊本県" ; "熊本県";
Left ( D ; 3 )="大分県" ; "大分県";
Left ( D ; 3 )="宮崎県" ; "宮崎県";
Left ( D ; 4 )="鹿児島県" ; "鹿児島県";
Left ( D ; 3 )="沖縄県" ; "沖縄県" ;
""))
Offline
都道府県名をキーとした小計パートの集計レイアウトで集計出来ます。
並び順を北から南としたいのでしたらその並びの値一覧を作って、それでソート出来ますね。
住所から、県名を抜き出すのは、
郵便番号があればそれを使うのが簡単ですね。
あげられた計算式は、、
県名で4文字は
神奈川県
和歌山県
鹿児島県
だけで、その最初の1文字は他と重複しませんから、
最初の一文字で判定出来ます。
それ以外は全て3文字だけですね。
もっと簡単な式にできます。
Offline
ありがとうございます。
小計パートの集計レイアウトとはレイアウト編集のパート定義→小計でよろしでしょうか
そこに、フィールド:都道府県を配置し、新しくフィールド:件数合計(集計:件数)配置
件数:Count ( 都道府県)を作成
でいいのでしょうか。件数合計にデータ総数が出てしまいます。
都道府県の式を簡単にするにはどのような式になりますか
よろしくお願いします
Offline
> 小計パートの集計レイアウトとはレイアウト編集のパート定義→小計でよろしでしょうか
その通りです。
小計パートのソート対象は都道府県フィールドとします。
> フィールド:都道府県を配置し、新しくフィールド:件数合計(集計:件数)配置
その通りです。
> 件数:Count ( 都道府県)を作成
これが分かりません。
計算フィールドですか?
としたら不要です。
計算式の一例です
Case ( Left ( 住所 ; 1 ) = "神" ; "神奈川県" ;
Left ( 住所 ; 1 ) = "和" ; "和歌山県" ;
Left ( 住所 ; 1 ) = "鹿" ; "鹿児島県" ;
Left ( 住所 ; 3 ) )
Offline
スクリプトで集計する方法もあります。
集計用ファイル
北海道
青森県
...
沖縄県
という感じで47レコード作成
集計用ファイル
スクリプト:
Loop
スクリプト実行 [「Count(期間,都道府県)」 , ファイル: 「集計対象ファイル」; 引数: "2017/8/1...2017/8/31" & ¶ & 集計::都道府県]
フィールド設定 [集計::Count; Get(スクリプトの結果)]
レコード/検索条件/ページへ移動 [次の; 最後まできたら終了]
End Loop
集計対象ファイル
スクリプト:Count(期間,都道府県)
変数を設定 [$arg; 値:Get(スクリプト引数)]
検索モードに切り替え []
フィールド設定 [物件データ::報告書作成日; GetValue ( $arg ; 1 )]
フィールド設定 [物件データ::住所; GetValue ( $arg ; 2 )]
エラー処理 [オン]
検索実行 []
エラー処理 [オフ]
現在のスクリプト終了 [結果: Get ( 対象レコード数 )]
Offline
ありがとうございます。
チポ様
新しくフィールド:件数合計(集計:件数)配置の件数を出すために計算フィールドの件数:Count ( 都道府県)を作成しました。
不要となると、フィールド:件数合計の件数はどのようにしたらよいのでしょうか。
都道府県の計算はとても簡略できますね。
ありがとうございす。
小計パートだとエクセル等にはきだしはできないのでしょうか
qb_dp様
集計用ファイルとは、新たにテーブルを作るということでしょうか。
件数はどこに出るのでしょうか
引数: "2017/8/1...2017/8/31"の部分は変更するときは、スクリプトを変更しなければいけないのでしょうか。
よろしくお願いいたします
Offline
都道府県名の取得式ですが、
「都・道・府・県」キーが含まれる都道府県名は「京都府」だけだから、
京都だけエスケープ処理を施してから一括計算する方法の提案です。
Let(
[ #prf=
Substitute( 住所
; ["京都府";"きょうと府"]
; ["都";"都¶"]
; ["道";"道¶"]
; ["府";"府¶"]
; ["県";"県¶"]
; ["きょうと";"京都"]
)
];
GetValue(#prf; 1)
)
Offline
集計用ファイル を作成してそこにテーブルを作ります。
上記の例では、
フィールド:都道府県
フィールド:Count
を作成し、件数は、フィールド:Count に入ります。
同じファイルの別テーブルでヤルと、レイアウトの切り替えが頻繁になるので、別ファイルが個人的にはおすすめです。
>引数: "2017/8/1...2017/8/31"の部分は変更するときは、スクリプトを変更しなければいけないのでしょうか。
集計期間設定用のグローバルフィーロドを作成しそれを使うと良いでしょう。
この方法の場合、既存ファイルへは、スクリプトを1つ追加するだけで、設計部分をいじらなくて済みます。
Offline
> 新しくフィールド:件数合計(集計:件数)配置の件数を出すために計算フィールドの件数:Count ( 都道府県)を作成
集計結果の都道府県名の種類数
ということでしょうか?
とすると
> Count ( 都道府県)
これでは無理です。
ちょっと面倒。。。
Offline
ありがとうございます
qb_dp様
>集計期間設定用のグローバルフィーロドを作成しそれを使うと良いでしょう。
グローバルフィールドはどこに作成するのでしょうか
>この方法の場合、既存ファイルへは、スクリプトを1つ追加するだけで、設計部分をいじらなくて済みます。
ここの部分がよくわかりません
チポ様
>集計結果の都道府県名の種類数ということでしょうか?
種類ではありません。都道府県ごとの件数を出すために考えました。
Count ( 都道府県)ではなくどのように書けばよろしいのでしょうか。
エクセル等にはきだしはできないのでしょうか
Offline
Substitute( 住所
; ["東京都";"東京都¶"]
; ["道";"道¶"]
; ["府";"府¶"]
; ["県";"県¶"]
)
が簡単では。
集計を使ったサンプル。タブ区切りでエクスポートもしています。年月でもソートしていますので、絞り込んでからスクリプト走らせれば、絞り込んだ範囲で集計できます。
https://www.dropbox.com/s/m9878h0g4q4tb … 7.zip?dl=0
Offline
> 都道府県ごとの件数を出す
フィールドタイプを
集計フィールド・カウント
として小計パートに配置して各県別の件数の集計。
同じフィールドを総計パートに配置して、対象レコードの件数の総計。
が求められます。
集計フィールドのエクスポートもできます。
Offline
チポ様
ありがとうございました。
エクスポートもできました。求めるものできました。
この応用で調査会社ごとの件数をだすとかできますね
皆さんありがとうございました。
Offline
北海道・・・沖縄をすべて出すにはどのようにすればいいですか。
0件の場合も表示したい。決まった都道府県の順番で表示する方法を教えてください
Offline
北海道・・・沖縄をすべて出すにはどのようにすればいいですか。
0件の場合も表示したい。決まった都道府県の順番で表示する方法を教えてください
別テーブルで集計する方法が簡単でしょう。
集計機能を使うと、0を出すのが結構めんどうです。
Offline
私も同じですね、
集計レイアウトでは件数0のレコードが必要になりますから、
お勧め出来ません。
別テーブルで、
1報告書作成日ごとに全都道府県のレコードを作り、
リレーションで集計出来ます。
Offline
Shin様
チポ様
ありがとうございます
>別テーブルで集計する方法が簡単でしょう。
単純にフィールドをコピーして張り付ければよいのでしょうか。
>集計機能を使うと、0を出すのが結構めんどうです。
やるとするとどのような手法でしょうか。
>別テーブルで、
>1報告書作成日ごとに全都道府県のレコードを作り、
>リレーションで集計出来ます。
別テーブルに
都道府県フィールド Countフィールド(集計フィールド・カウント都道府県)を作り
47レコードをつくりました。
Count部分が1しか出ません
よろしくお願いいたします
Last edited by gmen (2017-09-01 13:34:26)
Offline
別テーブルには報告書作成日フィールドも必要です。
リレーションを
別テーブル 元のテーブル
都道府県名 = 都道府県名
and
報告書作成日 = 報告書作成日
として、
別テーブルで計算フィールドを作り
Count ( 元のテーブル::都道府県名 )
で件数が求められます。
ここでは元のテーブルの集計フィールドは不要ですね。
Offline
チポ様 ありがとうございます
>別テーブルで計算フィールドを作り
>元のテーブル::都道府県名 ( 元のテーブル::都道府県名 )
>で件数が求められます。
リレーションを
別テーブル 元のテーブル
都道府県名 = 都道府県名
and
報告書作成日 = 報告書作成日
別テーブルに
都道府県フィールド
CountフィールドにCount(元のテーブル::都道府県名)
計画書作成日
を作りました。47レコード
作成してソート::都道府県をしてもContフィールドに何も出てきません。(ブランク)
何が問題なのでしょか
報告書作成日をグローバルにしたのですが大丈夫でしょうか
報告書作成日に期間を持たす場合はどのようにすればいいですか。
2017/08/01~2017/08/15
よろしくお願いします。
Offline
リレーションは正確にできていますか?
試しに、
別テーブルで、元テーブルのポータルを置いてみて、
関連レコードが正確に表示されているか確認してみたらいかがでしょう。
> 報告書作成日をグローバルにしたのですが大丈夫でしょうか
別テーブルなら大丈夫です。
リレーションの関連側の照合フィールドにグローバルフィールドはダメです。
> 報告書作成日に期間を持たす場合はどのようにすればいいですか。
> 2017/08/01~2017/08/15
ああ、報告書作成日を取り違えていました。
別テーブルで報告書作成日に変えて、
期間開始日と期間終了日
二つのフィールドを作り、
報告書作成日の照合を
期間開始日 <= 報告書作成日
and
期間終了日 >= 報告書作成日
に変更します。
期間が、月度の様に常に一定のものなら、
元のテーブルでそのフィールドを持たせることもできますね。
Offline
チポ様
ありがとうございます。
リレーションはあっているのですが、表示されません。
元データ::都道府県が【顧客ファイル::ID】リレーション【物件ファイル::顧客ID】でつながっていて、
住所を表示させています。そこから計算フィールドで都道府県を抜き出しフィールド名::都道府県に表示してあります。
これをリレーションすると、件数が出ないのですが、
元テーブルに新しくテキストフィールドを作成して都道府県を入力する。
これを別テーブルとリレーションすると件数が出ます。
計算フィールドだとためなのでしょうか。
元データの都道府県フィールドが非保存でした。
解除できません。別フィールドに値のみ貼りつけのようなことで回避できないでしょか
よろしくお願いします。
Last edited by gmen (2017-09-01 20:05:37)
Offline
遅れ馳せの上、横から失礼ですが、新たな別案の提案です。
別途テーブル追加やフィールド追加など極力抑えたシンプル構成案の提案です。
設定説明代わりに作例サンプルをアップしました。
【特徴】簡素化のため、
・全47都道府県分の枠取りは、繰り返し[47項]グローバルフィールドで確保。
・全47都道府県別の月次集計結果は、繰り返し[47項]計算フィールドへLookup関数式で自動取得。
・集計起算月は、現在のアクティブ・レコード上の報告書作成日から算出した月期を適用。
(集計起算月キーを手入力する手間を省くため)
・集計処理自体は、リレーション集計法で自動計算取得します。
・集計結果は、データ一覧表レイアウトのヘッダ部に自動更新の最新値を常時表示、閲覧できます。
●サンプル「月次リレーション集計.fp7」 → https://yahoo.jp/box/Cv8EKe
Offline
> 計算フィールドだとためなのでしょうか
計算フィールドがダメという訳ではありません。
リレーションの関連側の照合フィールドはには索引保存が条件です。
計算フィールドの引数にリレーションの関連フィールドを使っていると、
索引ができませんから関連側の照合フィールドには使えません。
元テーブルの住所をルックアップで入力すれば索引ができます。
Offline
チポ様 ありがとうございます。
>元テーブルの住所をルックアップで入力すれば索引ができます。
ルックアップの使い方がわかりません。
物件登録というところを参照しています。
開始するテーブルを元テーブル
関連テーブルからルックアップするを物件登録
値のコピー元フィールドを物件住所
としましたが空白のままです。
よろしくおねがいします。
Offline
まず最初に必ずバックアップを取って、ファイルを守ってください。
ルックアップは入力値の自動化ですから、既存のレコードにはルックアップができません。
再ルックアップという方法があります。
照合フィールドを選択して
フィールド内容の再ルックアップ
をします。
これは元に戻せませんから、もしおかしくなったらそれは捨てて、
バックアップのコピーを使います。
または、
LookUp関数
を使った計算フィールドは索引保存出来ます。
Offline
[ Generated in 0.007 seconds, 10 queries executed - Memory usage: 633.88 KiB (Peak: 666.79 KiB) ]