みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
FM12 Win、初心者です。
以下のようなデータを渡され、集計を頼まれたのですが、
全く分からず困っております。
どうか、お助け下さい。
ファイル・テーブル・フィールドは、現在、一つです。
フィールド一つの中に、下のようなテキストが入ったレコードが、13万件以上あります。
<テーブル名:実績管理表>ーーーーーーーーーーーーーーーーーーーーーー
<フィールド名:担当者別実績>
レコード1→鈴木:20佐藤:3小山:4笹原:11斎藤:0
レコード2→鈴木:4佐藤:5小山:3笹原:9斎藤:13
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
・データは、全て改行なしで入力されています。
・並び順は、鈴木→佐藤→小山→笹原→斎藤の順で「固定」ですが、
名前の後ろにある「:」のあとに続く数字はレコード毎に異なります。
・同姓同名はおりません。
・数字は、一桁の場合は、01等ではなく、1だけで入力されています。
この数字を、例えば上の場合ですと、「鈴木」の合計が「24」になるといった、
名前で集計する為には、どのように設計すればよろしいでしょうか?
テーブルやフィールド、レコードは追加しても分解しても、どのように加工しようが
担当者別に結果が拾えるようになれば問題ないと言われております。
ご教授、よろしくお願い致します。
計算フィールドを作りその計算式
Subsutitute ( テキスト ; [ "鈴木:" ; "" ] ; [ "佐藤:" ; ¶ ] ; [ "小山:" ; ¶ ] ; [ "笹原:" ; ¶ ] ; [ "斎藤:" ; ¶ ] )
とすると、数字だけが改行で入力されます。
これを繰り返しフィールドに展開し、
名前も繰り返しフィールド・グローバルにして、
これを分解で別テーブルでインポートします。
これで、名前と数字が一組1レコードとなりますね。
Offline
チポ様、ありがとうございます。
理解が乏しく、うまく機能してくれません…。
ーーーーーーーーーーーーーーーーーーーーーーーーーーー
フィールドを新たに追加し、タイプを計算で指定。
計算式内に
Substitute ( 担当者別実績 ; [ "鈴木:" ; "" ] ; [ "佐藤:" ; ¶ ] ; [ "小山:" ; ¶ ] ; [ "笹原:" ; ¶ ] ; [ "斎藤:" ; ¶ ] )
と入力した結果、値内の数字だけが改行で返されているところまでは出来ました。
ーーーーーーーーーーーーーーーーーーーーーーーーーーー
その後の
>これを繰り返しフィールドに展開し、
名前も繰り返しフィールド・グローバルにして、
これを分解で別テーブルでインポート
ここでつまづいています…。
「繰り返しフィールドに展開する」というのは、上で設定した計算のオプションにある「繰り返し数」を人数分の5にすればよろしいのでしょうか?
試してみましたが、数字が横並びにくっついてしまいました…。
何度も申し訳ございません。
よろしくお願い致します。
連投すみません。
数字が横並びに見えるだけで、フィールド内をクリックすると、中身は全て改行されていました。
横並びになっているものと、?で表示されているものがあった為、勘違いをしていました。
繰り返しフィールドに関する記事(http://www.filemaker.com/help/13/fmp/ja/html/create_db.8.26.html)を拾ってみながら、
あれこれ試行していますが、理解がおぼつかず未だに解決しておりません…。
どうか、よろしくお願い致します。
もう一つ計算フィールド・繰り返し(繰り返し数は名前の数)を作ります。
その計算式
GetValue ( 前記の計算フィールド [1] ; Get (計算式繰り返し位置番号 ) )
前記の計算フィールドは
理解しやすい様にフィールドとしましたが、
この計算式に直接計算式を入力すれば不要になりますね。
さらに、
テキストフィールド・グローバル・繰り返し
を作り、
名前を元のテキスト順に入力します。
別テーブルを作り、
名前と数字フィールドを作ります。
このテーブルで元のテーブルの繰り返しフィールド二つをインポート。
そのインポートオプションで繰り返しを複数のレコードに分ける指定をします。
Offline
チポ様、ありがとうございます!
出来ました!
すごい、流石です!ありがとうございました!
計算繰り返しフィールドだけで個別集計する、もっと簡便な方法です。
●計算繰り返し[担当者数 5]グローバルフィールド「担当者」を作り、下式(結果→テキスト)を設定。
(こちらは、見出し確認のためで目的集計処理には不用なので、なくても構いません)
Let([
#lst=担当者別実績[1];
#lst=
Substitute(#lst
;[0;""]
;[1;""]
;[2;""]
;[3;""]
;[4;""]
;[5;""]
;[6;""]
;[7;""]
;[8;""]
;[9;""]
;[":";¶]
)
];
GetValue(#lst; Get(計算式繰り返し位置番号))
)
●計算繰り返し[担当者数 5]フィールド「実績」を作り、下式(結果→数字)を設定。
Let([
#lst=担当者別実績[1];
#lst=
Substitute(#lst
;["鈴木:";""]
;["佐藤:";¶]
;["小山:";¶]
;["笹原:";¶]
;["斎藤:";¶]
)
];
GetValue(#lst; Get(計算式繰り返し位置番号))
)
●繰り返し[担当者数 5]集計フィールド「集計」を作り、「実績」フィールドの(個別)合計を設定。
以上で完成
ただし、13万レコードだと相当重いので、集計フィールドは常時表示させずに、必要なときだけ表示させるような工夫をしてくださいネ。
Last edited by Hiro (2016-04-22 15:55:28)
Offline
Hiro様、ありがとうございます。
御指南通りにやってみたところ、結果が取れました。
こういう組み方もできるんですね。
もう、ここまで自力で実装するのに、どれだけの知識力を得ればいいのか、
今でも頭がクラクラしますが、お二人に早く近づけるよう、勉強し、
上司から無茶ぶりされても、対応できるよう、頑張ります(笑)
大満足解決です!
Pages: 1
[ Generated in 0.004 seconds, 7 queries executed - Memory usage: 525.19 KiB (Peak: 529.73 KiB) ]