早速のご確認、お返事ありがとうございます。
曜日を置き換えれば良かったのですね!本当に勉強になります
今後ともどうぞよろしくお願いいたします。
]]>● 日付配列(計算)[42]:
g_表示月キー[1] - Choose(DayOfWeek(g_表示月キー[1]); "";7;1;2;3;4;5;6) + Get(計算式繰り返し位置番号)
月曜始まりで使用したい為、DayOfWeekを用いている計算フィールドを+1(下記に記す)と、しましたが日曜始まりの月の際に表示されない(2021年8月など)ことに気づきました。
どのように変更すれば良いかお知恵をお貸し頂けると幸いです。
下記にHiro様公開ファイルの計算フィールドを記します←的外れであればすみません。
・g_表示月キー(日付):グローバル、計算値「Date(Month(Self); 1; Year(Self))」
・日付配列(計算)[42]:g_表示月キー[1] - DayOfWeek(g_表示月キー[1]) + Get(計算式繰り返し位置番号) + 1
行いたい事は月曜始まりに表示し直して「1週目」「2週目」・・・と週単位で表示を考えております。
新年早々に申し訳ございませんがどうぞよろしくお願いいたします。
]]>早速の修正ULありがとうございます!!
大切に使わせて頂きます!
いつも本当に勉強になります!
Hiro様
カレンダーを検索しているとHiro様の投稿に辿り着き、興味がありDLさせて頂こうと試みましたがYahooのサービス終了に伴い、DLが出来ませんでした。
可能であれば他のファイルサイト等によるDLをさせて頂きたく存じます。
ご検討、宜しくお願い致します。
サンプルファイルを新たな保存先に移動し、公開しました。
各DL先URLを新規URLへ記述更新してありますので、お試しください。
カレンダーを検索しているとHiro様の投稿に辿り着き、興味がありDLさせて頂こうと試みましたがYahooのサービス終了に伴い、DLが出来ませんでした。
可能であれば他のファイルサイト等によるDLをさせて頂きたく存じます。
ご検討、宜しくお願い致します。
]]> 大変ありがとうございます。
とても、使いやすくなり重宝しております。(祝日表示!!ありがとうございます。)
現在、使用させて頂いておりますが、幾つか、可能でしたらテンプレートに機能を追加して頂きたくお願い申し上げます。
2項目ございます。。
1.当日に”復帰するボタン”があれば良いかなと思いましたが、上手く出来ませんでした。
宜しければ、ご教授頂ければ幸いです。
2.また、ToDo項目についてですが、優先項目をワンクリックで”強調表示”出来ればより便利かな!?と思います。
例えば最優先は、赤、次は黄・・などです。
どうぞよろしくお願い申し上げます。
(もし別の新トピックにおっしゃるならばそうさせて頂きます。)
さてご質問に付いてですが、圧倒的に説明が不足です。
2つ公開したテンプレートの一体どちら?とか!
文書説明だけでは難しいようなら、問題ファイルをアップするとか!
ところで、「日記配列[42]」Lookup計算フィールドは計算結果→非保存の設定になっていますか?
「カレンダー組み込み」目的 に特化・最適化させたカスタム関数 (getHoliday) を公開します。
与えられた1日付ごとに一々個別精査する 他者2件と違い、年から年間「祝日カレンダー」(ハッシュ)を一挙に作成します。
(2018年度の出力結果例)
+++++++++++++++++
2018/01/01:元旦
2018/01/08:成人の日
2018/02/11:建国記念の日
2018/02/12:建国記念の日の振替休日
2018/03/21:春分の日
2018/04/29:昭和の日
2018/04/30:昭和の日の振替休日
2018/05/03:憲法記念日
2018/05/04:みどりの日
2018/05/05:こどもの日
2018/07/16:海の日
2018/08/11:山の日
2018/09/17:敬老の日
2018/09/23:秋分の日
2018/09/24:秋分の日の振替休日
2018/10/08:体育の日
2018/11/03:文化の日
2018/11/23:勤労感謝の日
2018/12/23:天皇誕生日
2018/12/24:天皇誕生日の振替休日
+++++++++++++++++++++
※この最適化関数を使ったアップデート版テンプレートをアップしましたので、旧版と差し替えてください。
/*=======================================================
++++++++++++++++++++++++++++++
カスタム関数 getHoliday (<<年>>)
++++++++++++++++++++++++++++++
指定された年度の年間祝日の一覧リストを返します。
(日付 +< : >セパレータ + 祝日名 のハッシュ形式のリスト)
(※2018年6月20日現在)
CopyRight©2018, by Hiro
<https://fm-aid.com/bbs2/profile.php?section=essentials&id=3>
=======================================================*/
Let ( [ // === Let start ===
//+++++++++++++++++++++++++
// 「$year 年度」<<年>>パラメータ引数 を定義
//+++++++++++++++++++++++++
$year = <<年>> ;
// 「$getFurikae 振替休日」サブ関数を定義
// 日付:振替休日名 のハッシュ形式
// Evaluate($getFurikae) で実行
//+++++++++++++++++++++++++
// 2005.05.20 の法改正で
// 「国民の祝日」が日曜日に当たるときは、
// その日後においてその日に最も近い「国民の祝日」でない日を休日とする、と
// 振替休日の定義が変更になっている。
// 5月3日、5月4日が日曜日の場合は5月6日は振替休日
// 振り替え休日(1973(昭和48)年4月12日施行)
// 祝日が日曜日の時は、翌月曜日が振替休日とする。
$getFurikae =
"Case(
$theDate>=Date(1;1;2007) and
DayOfWeek ($theDate)=1 and
($theDate=Date(5;3;$year) or $theDate=Date(5;4;$year))
; Date(5;6;$year) & \":\" & $hName & \"の振替休日\"
;
$theDate>=Date(4;12;1973) and
DayOfWeek($theDate)=1
; Date(Month($theDate); Day($theDate+1); $year) & \":\" & $hName & \"の振替休日\"
)";
// 「#getHoliday 祝日及び振替休日」サブ関数を定義
// 日付:祝日名 のハッシュ配列形式のリスト
// Evaluate(#getHoliday) で実行
// +++++++++++++++++++++++++
#getHoliday =
"List($theDate &\":\"& $hName; Evaluate($getFurikae))" ;
// 「#shunbun 春分」変数を定義
// +++++++++++++++++++++++++
#shunbun =
Case(
$year<=1899 and $year>=1851;
Date(3;Int(19.8277+.242194*($year-1980)-Int(($year-1983)/4));$year);
$year<=1979;
Date(3;Int(20.8357+.242194*($year-1980)-Int(($year-1983)/4));$year);
$year<=2099;
Date(3;Int(20.8431+.242194*($year-1980)-Int(($year-1980)/4));$year);
$year<=2150;
Date(3;Int(21.851+.242194*($year-1980)-Int(($year-1980)/4));$year)
);
// 「#shuubun 秋分」変数を定義
// +++++++++++++++++++++++++
#shuubun =
Case(
$year<=1899 and $year>=1851;
Date(9;Int(22.2588+.242194*($year-1980)-Int(($year-1983)/4));$year);
$year<=1979;
Date(9;Int(23.2588+.242194*($year-1980)-Int(($year-1983)/4));$year);
$year<=2099;
Date(9;Int(23.2488+.242194*($year-1980)-Int(($year-1980)/4));$year);
$year<=2150;
Date(9;Int(24.2488+.242194*($year-1980)-Int(($year-1980)/4));$year)
);
// +++++++++++++++++++++++++
// === Holiday List start ===
// +++++++++++++++++++++++++
#holidayList =
// 祝日の算出範囲の定義
// +++++++++++++++++++++++++
// === <適用範囲> ===
// 国民の祝日に関する法律(祝日法)の施行された1948(昭和23)年7月20日以降
// (振替休日は1973(昭和48)年4月12日制定・施行)
// 春分・秋分の簡易計算の出来る範囲(1851〜2150)
// 春分・秋分の日の計算は「新こよみの便利帳 」(恒星社厚生閣刊) による
// 祝日としての春分・秋分の日は閣議で決定され前年の2月の官報に公示される。
Case (
$year>=1948 and $year<=2150 ;
// === List() start
// +++++++++++++++++++++++++
List(
// ● 元旦
// 元旦(1月1日)1948.07.20制定
Case($year>=1949;
Let([
$theDate=Date(1;1;$year);
$hName="元旦"
];
Evaluate(#getHoliday)
)
) ;
// ● 成人の日
// 成人の日(1月15日)1948.07.20制定
// 成人の日(1月第2月曜)1998.10.21制定 2000.01.01施行
Case(
$year>=2000;
Let([
$theDate=Date(1;15 - DayOfWeek(Date(1;6;$year));$year);
$hName="成人の日"
];
Evaluate(#getHoliday)
)
;
$year>=1949;
Let([
$theDate=Date(1;15;$year);
$hName="成人の日"
];
Evaluate(#getHoliday)
)
) ;
// ● 建国記念の日
// 建国記念の日(2月11日)1966.6.25制定
Case($year>=1967;
Let([
$theDate=Date(2;11;$year);
$hName="建国記念の日"
];
Evaluate(#getHoliday)
)
) ;
// ● 春分の日
// 春分の日(春分日)1948.07.20制定
Case($year>=1967;
Let([
$theDate=#shunbun;
$hName="春分の日"
];
Evaluate(#getHoliday)
)
) ;
// ● 天皇誕生日
// 天皇誕生日(4月29日)1948.07.20制定
Case($year>=1949 and $year<=1988;
Let([
$theDate=Date(4;29;$year);
$hName="天皇誕生日"
];
Evaluate(#getHoliday)
)
) ;
// ● みどりの日
// みどりの日(4月29日)1989.02.17制定
Case($year>=1989 and $year<=2006;
Let([
$theDate=Date(4;29;$year);
$hName="みどりの日"
];
Evaluate(#getHoliday)
)
) ;
// ● 昭和の日
// 昭和の日(4月29日)2005.05.20制定 2007.01.01施行
Case($year>=2007;
Let([
$theDate=Date(4;29;$year);
$hName="昭和の日"
];
Evaluate(#getHoliday)
)
) ;
// ● 即位礼正殿の儀(仮称)
// 2019年以降の5月1日は即位礼正殿の儀を祝して定例化、2019年以降の呼称は未定
Case($year>=2019;
Let([
$theDate=Date(5;1;$year);
$hName="即位礼正殿の儀(仮称)"
];
Evaluate(#getHoliday)
)
) ;
// ● 憲法記念日
// 憲法記念日(5月3日)1948.07.20制定
Case($year>=1949;
Let([
$theDate=Date(5;3;$year);
$hName="憲法記念日"
];
Evaluate(#getHoliday)
)
) ;
// ● 国民の休日
// 国民の休日 1985.12.27制定
// 国民の祝日に関する法律 第3条3項(1985.12.27施行)
// その前日及び翌日が「国民の祝日」である日は、休日とする。
// (日曜日にあたる日及び前項に規定する休日にあたる日を除く。)
// 「国民の休日」は通称名
// ※振り替え休日が優先されるので国民の休日が月曜日になることはない。
Case($year>=1986 and $year<=2006 and DayOfWeek(Date(5;4;$year))>=3;
Let([
$theDate=Date(5;4;$year);
$hName="国民の休日"
];
Evaluate(#getHoliday)
)
) ;
// ● みどりの日
// みどりの日(5月4日)2005.05.20制定 2007.01.01施行
Case($year>=2007;
Let([
$theDate=Date(5;4;$year);
$hName="みどりの日"
];
Evaluate(#getHoliday)
)
) ;
// ● こどもの日
// こどもの日(5月5日)1948.07.20制定
Case($year>=1949;
Let([
$theDate=Date(5;5;$year);
$hName="こどもの日"
];
Evaluate(#getHoliday)
)
) ;
// ● 海の日
// 海の日(7月20日)1995.03.08制定 1996.01.01施行
// 海の日(7月第3月曜日)2001.06.22制定 2003.01.01施行
Case(
$year>=2003;
Let([
$theDate=Date(7;22 - DayOfWeek(Date(7;6;$year));$year);
$hName="海の日"
];
Evaluate(#getHoliday)
)
;
$year>=1996;
Let([
$theDate=Date(7;20;$year);
$hName="海の日"
];
Evaluate(#getHoliday)
)
) ;
// ● スポーツの日(旧名:体育の日)
// 体育の日(10月10日)1966.06.25制定
// ※Tokyoオリンピックの2020年は、7月24日へ日付変更
// 2020年以降 体育の日は、スポーツの日 に改名
Case($year=2020;
Let([
$theDate=Date(7;24;$year);
$hName="スポーツの日"
];
Evaluate(#getHoliday)
)
) ;
// ● 山の日
// 山の日(8月11日)2014.05.23制定
Case($year>=2016;
Let([
$theDate=Date(8;11;$year);
$hName="山の日"
];
Evaluate(#getHoliday)
)
) ;
// ● 敬老の日
// 敬老の日(9月15日)1966.06.25制定
// 敬老の日(9月第3月曜日)2001.06.22制定 2003.01.01施行
Case(
$year>=2003;
Let([
$theDate=Date(9;22 - DayOfWeek(Date(9;6;$year));$year);
$hName="敬老の日"
];
Evaluate(#getHoliday)
)
;
$year>=1966;
Let([
$theDate=Date(9;15;$year);
$hName="敬老の日"
];
Evaluate(#getHoliday)
)
) ;
// ● 国民の休日
// 敬老の日が第3月曜日に改正されたことにより派生
// 秋分の日が水曜日になる年
// 2009,2015,2026,2032,2037,2043,2049,2054,2060,2071,2077,
// 2088,2094,2099,2105,2111,2116,2122,2133,2139,2150...
Case(
$year>=2003 and #shuubun-2=Date(9;22-DayOfWeek(Date(9;6;$year));$year);
Let([
$theDate=#shuubun -1;
$hName="国民の休日"
];
Evaluate(#getHoliday)
)
) ;
// ● 秋分の日
// 秋分の日(秋分日)1948.07.20制定
Let([
$theDate=#shuubun;
$hName="秋分の日"
];
Evaluate(#getHoliday)
) ;
// ● 体育の日
// 体育の日(10月10日)1966.06.25制定
// 体育の日(10月第2月曜日)1998.10.21制定 2000.01.01施行
// Tokyoオリンピックの2020年以降は、スポーツの日 に変更され廃止
Case(
$year>=2000 and $year<2020 ;
Let([
$theDate=Date(10;15 - DayOfWeek(Date(10;6;$year));$year);
$hName="体育の日"
];
Evaluate(#getHoliday)
)
;
$year>=1966 and $year<2000;
Let([
$theDate=Date(10;10;$year);
$hName="体育の日"
];
Evaluate(#getHoliday)
)
) ;
// ● スポーツの日(旧名:体育の日)
// 体育の日(10月10日)1966.06.25制定
// 体育の日(10月第2月曜日)1998.10.21制定 2000.01.01施行
// ※Tokyoオリンピックの2020年は、7月24日へ日付変更
// 2020年以降 体育の日は、スポーツの日 に改名
Case(
$year=2020; "" // 7月の位置へ移動してある。
;
$year>=2020 ;
Let([
$theDate=Date(10;15 - DayOfWeek(Date(10;6;$year));$year);
$hName="スポーツの日"
];
Evaluate(#getHoliday)
)
) ;
// ● 文化の日
// 文化の日(11月3日)1948.07.20制定
Case($year>=1948;
Let([
$theDate=Date(11;3;$year);
$hName="文化の日"
];
Evaluate(#getHoliday)
)
) ;
// ● 勤労感謝の日
// 勤労感謝の日(11月23日)1948.07.20制定
Case($year>=1948;
Let([
$theDate=Date(11;23;$year);
$hName="勤労感謝の日"
];
Evaluate(#getHoliday)
)
) ;
// ● 天皇誕生日
// 天皇誕生日(12月23日)1989.02.17制定
// 2019年以降は天皇譲位に伴い廃止
Case($year>=1989 and $year<2019;
Let([
$theDate=Date(12;23;$year);
$hName="天皇誕生日"
];
Evaluate(#getHoliday)
)
) ;
// ● 皇太子明仁親王の結婚の儀
// 皇太子明仁親王の結婚の儀(昭和34年4月10日)
Case($year=1959;
Let([
$theDate=Date(4;10;$year);
$hName="皇太子明仁親王の結婚の儀"
];
Evaluate(#getHoliday)
)
) ;
// ● 昭和天皇の大喪の礼
// 昭和天皇の大喪の礼(平成元年2月24日)
Case($year=1989;
Let([
$theDate=Date(2;24;$year);
$hName="昭和天皇の大喪の礼"
];
Evaluate(#getHoliday)
)
) ;
// ● 即位礼正殿の儀
// 即位礼正殿の儀(平成2年11月12日)
Case($year=1990;
Let([
$theDate=Date(11;12;$year);
$hName="即位礼正殿の儀"
];
Evaluate(#getHoliday)
)
) ;
// ● 皇太子徳仁親王の結婚の儀
// 皇太子徳仁親王の結婚の儀(平成5年6月9日)
Case($year=1993;
Let([
$theDate=Date(6;9;$year);
$hName="天皇誕生日"
];
Evaluate(#getHoliday)
)
)
) // === List() end ===
) // === Holiday List end ===
] ; // === Let end ===
#holidayList // 最終結果リスト
)
/*=======================================================
CopyRight©2018 by Hiro
<https://fm-aid.com/bbs2/profile.php?section=essentials&id=3>
=======================================================*/
【修正履歴】
・ 2018/6/21 13:40
Shinさんの「体育の日」の呼称変更のご指摘を請け、2020年以降を「スポーツの日」へ変更しました。
【追記】
上記 getHoliday関数 の内容コピーは以下からダウンロードもできます。
●テキストファイル「getHoliday カスタム関数.txt」 → https://yahoo.jp/box/bSRLYu → https://1drv.ms/t/s!AlaCGhTKTWEO9ENzWFA … L?e=EHeCG7
(※ファイルの文字コードは unicode です。式記述にユニコードの演算記号文字が含まれるため)
データ配布ありがとうございます。
参考にさせていただきます!
祝日カレンダーを盛り込んだ別途ロジックの新型 ToDoカレンダ(直書式、祝日付き) を追加公開します。
法定祝日カレンダーの生成・組込み、ユーザ書込みレコードの追加・削除・編集などほぼ全ての処理管理を、
バックヤードのブラインド自動処理で行うようにしましたので、使い勝手がかなり向上しています。
●テンプレート「ToDoカレンダ(直書式、祝日付き).fmp12」→ https://yahoo.jp/box/mZitIB → https://1drv.ms/u/s!AlaCGhTKTWEO9ExidDe … J?e=SHXRwh
]]>