初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2019-12-05 18:08:55

中田
Member

何日から何日までに○曜日と○曜日が何回あるか

いつもお世話になっております。

フィールド「日付開始日」「日付終了日」 が有りその範囲に特定の曜日、(金土など)が何回あるか、の計算式を教えて頂けないでしょうか?

日付のテーブルを作りリレーションを貼れば良いと思いますが出来れば計算式のみで出したいです。

ご教授宜しくお願い致します。

MacOS FM17

Offline

#2 2019-12-05 20:58:06

Hiro
Member

Re: 何日から何日までに○曜日と○曜日が何回あるか

ループ計算式で求める方法。

たとえば、(※特定曜日は、最大7曜日の内、任意数を順不同指定可能として)
・「日付開始日」日付フィールド:[2019/12/01]
・「日付終了日」 日付フィールド:[2019/12/31]
・「特定曜日」繰り返し[7回]テキストフィールド: [水|日|金| | | | ]
この時、目的の
●「集計結果」繰り返し[7回]計算フィールド: [4|5|4| | | | ]
を得るためのループ計算式は、
(※ この式のループ回数限界は310回のため、期間日数も310日間以下に限定です。)
(※ 310日間を超える場合は、式に限界拡張式が必要となります。)

Let(
[
   $str=日付開始日[1] - 1;
   $end=日付終了日[1];
   $dow=Substitute(特定曜日;["日";1];["月";2];["火";3];["水";4];["木";5];["金";6];["土";7]);
   $i=0;
   $res="";
   $LOOP=
      "Case(
         $str+$i=$end; If($res; $res);
         Let([
            $i=$i+1;
            $res=Sum($res; (DayOfWeek($str+$i)=$dow))
         ]; Evaluate($LOOP))
      )"
];
   Evaluate($LOOP)
)

Last edited by Hiro (2019-12-06 13:07:28)

Offline

#3 2019-12-06 08:54:30

Shin
Member

Re: 何日から何日までに○曜日と○曜日が何回あるか

開始日 D0 終了日 D1 として、
Div ( D1[1] ; 7 ) - Div ( D0[1] ; 7 ) - 1
+ GetAsBoolean ( Get ( 計算式繰り返し位置番号 ) ≥ DayOfWeek ( D0[1] ) )
+ GetAsBoolean ( Get ( 計算式繰り返し位置番号 ) ≤ DayOfWeek ( D1[1] ) )
という繰り返し7の計算フィールドで求められます。これの任意の位置を参照すればいいでしょう。

または、求める曜日を数値で持たせる繰り返しフィールド DOW を作り、
Div ( D1[1] ; 7 ) - Div ( D0[1] ; 7 ) - 1
+ GetAsBoolean ( DOW ≥ DayOfWeek ( D0[1] ) )
+ GetAsBoolean ( DOW ≤ DayOfWeek ( D1[1] ) )

Last edited by Shin (2019-12-06 15:11:56)

Offline

#4 2019-12-06 15:46:39

中田
Member

Re: 何日から何日までに○曜日と○曜日が何回あるか

Hiro様、Shin様、いつも有り難うございます。

どちらの方法でも求める答えを出せました。
式の内容はまだ理解に至りませんが勉強させて頂きます。

ご教授ありがとうございました。

Offline

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.005 seconds, 7 queries executed - Memory usage: 551.86 KiB (Peak: 579.7 KiB) ]