みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
お世話になります。
Win7 FM13 Advを使用しています。
土日祝日を除いたある期間の営業日の集計を出したいので
PMpro.jpのサイトにあるカスタム関数「BusinessDays 関数」をお借りして、
初めてカスタム関数の登録を試みました。
「BusinessDays 関数」を使うには、
まず、「HolidayJ 関数」を登録しないといけないようで
その関数の編集画面で引数の欄に 日付 と入力しようとすると
エラーダイアログが出て登録が出来ません。
http://prntscr.com/7jj2v0 (スクリーンショット)
エラーの説明文ある理由に該当しないと思うのですが
何が悪いのでしょうか?
何かアドバイスをよろしくお願いします。
Offline
取得関数のパラメーターに、"日付" があります。そのためでは。
"アカウント名" などでもエラーになりますね。
Offline
Shin 様
遅くなりましたが、ご回答頂きありがとうございます。
取得関数や日付関数にも
”日付”がありますね。
エラーになって、どうやってもダメだったので、
下記のサイトから「HolidayJ 関数」が使われているサンプルファイルをダウンロードして
そのサンプルファイルから「HolidayJ 関数」をインポートして
どうにか「HolidayJ 関数」は使えるようになりました。
https://github.com/Genecom/FileMakerSampleSolutions
あとは、「HappyMonday 関数」と「 BusinessDays 関数」を登録し、
日曜、祝日を除いた営業日は算出出来るようになったのですが
3. 銀行休日の場合のサンプル計算式 (土日祝と年末・年始の12/31〜1/3)
を設定しようとすると
" ] " が多いとかでエラーが出ます。
http://prntscr.com/7kabvw (スクリーンショット,サンプル式を省略してます)
サンプル計算式使用のためにコメントの記号は削除してますし、
括弧はそのままにしているのですが、何が悪いのでしょうか?
色々試してみましたが
or ( theDate = Date ( 12 ; 31 ; Y ) // 年末
or ( theDate = Date ( 1 ; 2 ; Y ) // 年始 1月1日はHolidayJで判定済み
or ( theDate = Date ( 1 ; 3 ; Y ) //
ここの部分があると、エラーが出ます。
Let (
[ // === Let_Start ==================================
START_DATE = 開始日 ;
END_DATE = 終了日 ;
END_NUM = END_DATE - START_DATE ;
theDate = START_DATE ;
Y = Year ( theDate ) ;
BD =
not (
( not IsEmpty ( HolidayJ ( theDate ) ) ) // 祝日
or ( DayOfWeek ( theDate ) = 1 ) // 日曜日
or ( DayOfWeek ( theDate ) = 7 ) // 土曜日
or ( theDate = Date ( 12 ; 31 ; Y ) // 年末
or ( theDate = Date ( 1 ; 2 ; Y ) // 年始 1月1日はHolidayJで判定済み
or ( theDate = Date ( 1 ; 3 ; Y ) //
)
] ; // === Let_End ==================================
Case
not ( IsEmpty ( START_DATE ) or IsEmpty ( END_DATE ) ) and
( 0 ≤ END_NUM ) ;
BD
+ BusinessDays ( START_DATE + 1 ; END_DATE )
)
)Offline
日付関数の "日付" は、パラメーターでなく、位置を示す文字列ですので関係ないですが。Get() 関数は、その中の文字列そのものがパラメーターですので、関数のパラメーターとしては使えません。
同じサイトにある、 Workday() を使ってみればいかが。祝日だけでなく、休日やハッピーマンデイにも対応していますよ。山の日には非対応みたい。
Offline
Shin 様
ご回答頂き、ありがとうございます。
お教え頂いた Workday() を見てみましたが
これをどう活用すれば営業日が出せるのか思いつきませんでした。
ただ、この関数は休みの日を決められる様なので、
同様に「HolidayJ 関数」にも大晦日と三が日を祝日に設定する良いと思いつき、
その様に設定すると、思った通りに実現できました。
これだと来年の1月3日は月曜日なので1月4日が振替休日と判定されてしまうようなのですが、
そこは2017年から適用するように設定しました。
エラーは解決はしてませんが、アドバイス頂き、ありがとうございます。
Offline
or ( theDate = Date ( 12 ; 31 ; Y ) // 年末
or ( theDate = Date ( 1 ; 2 ; Y ) // 年始 1月1日はHolidayJで判定済み
or ( theDate = Date ( 1 ; 3 ; Y ) //
を
or ( theDate = Date ( 12 ; 31 ; Y ) ) // 年末
or ( theDate = Date ( 1 ; 2 ; Y ) ) // 年始 1月1日はHolidayJで判定済み
or ( theDate = Date ( 1 ; 3 ; Y ) ) //
に変更すればどうですか試してください。
Pages: 1
[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 562.56 KiB (Peak: 581.73 KiB) ]