みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
お世話になります。
Win7 FMアドバンス12利用です。
DayOfWeekで何曜日かを求めることはできるようになったのですが
毎月第1木曜が何日かの計算方法がいろいろ調べてみましたが
分かりませんのでどなたかご教授をお願いいたします。
Offline
【● 当月の第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
Hiro様ありがとうございます!!
追加の質問ですが
第2木曜 第3木曜 第4木曜とそれぞれ出す場合は
#1stを#2nd #3rd #4thにすればよろしいでしょうか?
Offline
【● 当月の第〇番目の□曜日 を求める式】
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
第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
Hiro様Shin様いつもご教授いただき誠にありがとうございます!!
Offline
Pages: 1
[ Generated in 0.011 seconds, 9 queries executed - Memory usage: 508.19 KiB (Peak: 514.78 KiB) ]