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

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

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

You are not logged in.

Announcement

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


#1 2017-09-17 15:21:38

ダーツ
Member

第1木曜日の日付を求めるには

お世話になります。

Win7 FMアドバンス12利用です。
DayOfWeekで何曜日かを求めることはできるようになったのですが
毎月第1木曜が何日かの計算方法がいろいろ調べてみましたが
分かりませんのでどなたかご教授をお願いいたします。

Offline

#2 2017-09-17 17:22:51

Hiro
Member

Re: 第1木曜日の日付を求めるには

【● 当月の第1木曜日 を求める式】
Let(
   [#1st=Date(Month(Get(日付)); 1; Year(Get(日付)))];
   #1st + (5-DayOfWeek(#1st)) + 7*(5<DayOfWeek(#1st))
)


【●当年 毎月の第1木曜日の一覧リスト を求めるループ計算式】
Let(
[
   $y=Year(Get(日付));
   $m=0;
   $res="";
   $fnc="Case($m=12; $res;
      Let([
         $m=$m+1;
         #1st=Date($m;1;$y);
         #add=#1st + (5-DayOfWeek(#1st)) + 7*(5<DayOfWeek(#1st));
         $res=List($res; #add)
      ]; Evaluate($fnc))
   )"
];
   Evaluate($fnc)
)

Offline

#3 2017-09-17 18:46:52

ダーツ
Member

Re: 第1木曜日の日付を求めるには

Hiro様ありがとうございます!!

追加の質問ですが
第2木曜 第3木曜 第4木曜とそれぞれ出す場合は
#1stを#2nd #3rd #4thにすればよろしいでしょうか?

Offline

#4 2017-09-17 20:10:56

Hiro
Member

Re: 第1木曜日の日付を求めるには

【● 当月の第〇番目の□曜日 を求める式】
Let([
   #wks=3;   //第〇番目の〇を指定、3=第3番目
   #dow=5;   //曜日番号を指定、5=木曜日(日~土 ⇒ 1~7)
   #1st=Date(Month(Get(日付)); 1; Year(Get(日付)))
];
   #1st + (#dow-DayOfWeek(#1st)) + 7*(#wks-(#dow>=DayOfWeek(#1st)))
)


【●当年 毎月の第〇の□曜日の一覧リスト を求めるループ計算式】
Let([
   $wks=3;   //〇:3=第3番目
   $dow=5;   //□:5=木曜日
   $y=Year(Get(日付));
   $m=0;
   $res="";
   $fnc="Case($m=12; $res;
      Let([
         $m=$m+1;
         #1st=Date($m;1;$y);
         #add=#1st + ($dow-DayOfWeek(#1st)) + 7*($wks-($dow>=DayOfWeek(#1st)));
         $res=List($res; #add)
      ]; Evaluate($fnc))
   )"
];
   Evaluate($fnc)
)

Offline

#5 2017-09-17 20:52:41

Shin
Member

Re: 第1木曜日の日付を求めるには

第1木曜日:Date ( m ; 8 ; y )  - DayOfWeek ( Date ( m ; -4 ; y )  )
第2木曜日:Date ( m ; 15 ; y )  - DayOfWeek ( Date ( m ; -4 ; y )  )
第3木曜日:Date ( m ; 22 ; y )  - DayOfWeek ( Date ( m ; -4 ; y )  )
第4木曜日:Date ( m ; 29 ; y )  - DayOfWeek ( Date ( m ; -4 ; y )  )
が、一番簡単でしょう。
汎用にするには、
DOW = ( 日曜日 : 1, 月曜日 : 2, ... 木曜日 : 5, ... )
第n番目 として、
Let (
d = Date ( m ; n * 7 + 1 ; y ) ;
d - DayOfWeek ( d - DOW )
)

Last edited by Shin (2017-09-17 22:46:06)

Offline

#6 2017-09-17 21:09:44

ダーツ
Member

Re: 第1木曜日の日付を求めるには

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: 509.36 KiB (Peak: 516.14 KiB) ]