[
xx] は
省略可 を意味する。 [当日]は「割り当て予定日」と同義
注:下記関数への
入力パラメータには「
変数」の使用
不可。
即値(1 , 2 , 3 等)のみ可。
ID番号() 割り当て予定のIDを返す
ID番号()
テンプレート
機能 : 割当て予定のIDを返す
書式 : ID番号()
引数 : 無し
戻り値: メンバーID
グループ番号() 割当て予定者のグループ番号を返す
グループ番号()
テンプレート
機能 : 割当て予定者のグループ番号を返す
書式 : グループ番号()
引数 : 無し
戻り値: グループ番号
グループ所属() 割当て予定者がグループに所属しているか?
グループ所属()
機能 : 割当て予定者が指定グループに所属しているかを返す
書式 : グループ所属([Grp1][,Grp2][,Grp]…)
引数 : 調べたいグループの番号をカンマ区切りで複数指定可
戻り値: 指定のいずれかのグループに所属していたら True
いずれにも所属していない場合は False
使用例: グループ所属(10,11,50)
10,11,50 のいずれかに所属していたらTrueが返る。
勤務番号() 割り当て予定の勤務番号を返す
勤務番号()
テンプレート
機能 : 割当て予定の勤務番号を返す
書式 : 勤務番号([ID][,日にち])
引数 : ID番号(省略可)
: 日にち(省略可)
戻り値: 勤務番号を返す
使用例 勤務番号() 割り当て予定の人/日の勤務番号
勤務番号(340,5) 指定の人/指定日の勤務番号
日() 割り当て予定日の日にちを返す
日()
テンプレート
機能 : 割当て予定の日にちを返す
書式 : 日()
引数 : 無し
戻り値: 日にちを表す数値
例: 2020/10/5 がシフト割り当て予定日の場合、「5」が返る。
月() 割り当て予定日の月を返す
月()
機能 : 割当て予定の月を返す
書式 : 月()
引数 : 無し
戻り値: 月を表す数値
例: 2020/10/5 がシフト割り当て予定日の場合、「10」が返る。
年() 割り当て予定日の年を返す
年()
機能 : 割当て予定の年を返す
書式 : 年()
引数 : 無し
戻り値: 年を表す数値
例: 2020/10/5 がシフト割り当て予定日の場合、「2020」が返る。
月日数() 該当月の末日を返す
月日数()
機能 : 該当月の末日を返す
書式 : 月日数()
引数 : 無し
戻り値: 日にち
予定休み数() 個人条件で入力された予定休み日数を返す
予定休み数()
機能 : 個人条件の予定休み数を返す
書式 : 予定休み数([ID])
引数 : ID番号 省略可(省略時は割り当て予定のID番号が対象)
戻り値: 日数
曜日() 割り当て予定日の曜日を返却
曜日()
テンプレート 実例集
機能 : 曜日を返却
書式 : 曜日()
引数 : 無し
戻り値: 曜日を表す数値 1〜7 → 日曜〜土曜 に対応
週番号() 第何週目かを返す
週番号()
機能 : 月初から数えた週番号を返却
書式 : 週番号([基準曜日])
引数 : 基準曜日。省略,0,1:日曜基準 2:月曜基準 3:火曜 ・・・・
戻り値: 1以上の数値
注:
週通番(1900/1/1 からの通番)を求めるには、
週番号() の代わりに
Int( Dateserial(年(),月(),日()-1 )/7 ) とします。(
日曜起点)
月曜起点の場合は、
赤字部分を
-2 、
火曜起点は
-3 とします。)
記述例 1 週番号とID指定で割当
仕様:IDが341と342の人は、それぞれ第2週目、第3週目の勤務が不可
作成結果例
赤枠がスクリプトで指定した不可日
記述例 2 グループに隔週で割当
仕様:グループ
10,
20に
隔週で「
午」を
必須割当
使用する機能
・グループ指定:10,20を補助グループで「1」に指定 → 一括してメンバー必須指定可
・必須条件指定:「午」をグループ「1」に、「2」名必須で割当
・要員割当て
・ユーザースクリプト → 各グループを隔週で禁止
・
グループ指定
青枠でグループ
10,
20を補助グループ
1に指定
・
必須割当条件
勤務「6:
午後」は「1:
倒幕志士」に「
2」名の割りてを必須とする
・要員割当てとユーザースクリプト
毎日「6:午」を2名要求
スクリプトの意味
割当てようとしている勤務が「6:午後」の場合、
週番号(3:火曜起点)が偶数(番号を2で割った余りが0)の場合
グループが「10」 → 割当て不可
奇数(1)の場合
グループが「20」 → 割当て不可
mod は、
余りを求める演算子。 例: a mod b → a を b で割った余りが返される。
・
作成結果例
赤枠がスクリプトで指定した割当て 「
午」が
隔週で割り当てられている
休平日() 当日の休平日区分を返却
休平日()
テンプレート
機能 : 当日の休平日区分を返却
書式 : 休平日([相対日])
引数 : 相対日:省略可(既定:当日)
-2:前々日 -1:前日
0(省略):当日
1:翌日 2:翌々日
(参照可能範囲:前月初日〜翌月末日)
戻り値: 0-平日,1-祝日,2-固定休
前日勤務() 当日からn日前の勤務を返す
前日勤務()
テンプレート 実例集
機能 : 当日からn日前の勤務を返す
書式 : 前日勤務( 相対日 [, ID] )
引数 : 相対日 1-前日 2-前々日
(参照可能範囲:前月下旬10日、当月内)
ID 調べたい人のID(省略時は割り当て予定)
戻り値: 勤務番号
注意:本関数を利用して
連続する勤務を制限する場合は注意が必要。
テンプレート参照
翌日勤務() 割り当て予定日のn日後の勤務を返す
翌日勤務()
実例集
機能 : 割り当て予定日のn日後の勤務を返す
書式 : 翌日勤務( 相対日 [, ID] )
引数 : 相対日 1-翌日 2-翌々日
(参照可能範囲:当月内)
ID 調べたい人のID(省略時は割り当て予定)
戻り値: 勤務番号
注意:本関数を利用して
連続する勤務を制限する場合は注意が必要。
テンプレート参照
直近勤務() 一番近い日の勤務番号を返す
前日勤務()
機能 : 一番近い日の勤務番号を返す
書式 : 直近勤務( ID [,方向])
引数 : 引数 :ID:調べたい人のID(省略時は割り当て予定) 省略可
方向:調べる方向(0または省略:前日方向 1:後日方向) 省略可
戻り値: 勤務番号
例:下記のようなシフト(5日目の割り当て●予定)の場合
勤務番号 A=10 B=11 C=12
1 2 3 4 5 6 7 8 9 〜
100 XX A B 休 休 ● 休 休 休 C 〜
102 YY A 休 休 休 B 休 C 休 C 〜
直近勤務() → 11
直近勤務(,1) → 12
直近勤務(102) → 10
直近勤務(102,1)→ 12
開始時刻() 指定勤務の開始時刻を返す
開始時刻()
機能 : 指定勤務の開始時刻を"時"単位の小数形式で返す
書式 : 開始時刻( [勤務番号] )
引数 : 勤務番号:省略時は割り当てようとしている勤務(開始時刻(勤務番号())と同一)
戻り値: 小数形式で表した時
"8:00" → 8 "8:30" → 8.5 "8:15" → 8.25
例:割り当てようとしている勤務の開始時刻が
12時より後の場合は「割り当て不可」
終了時刻() 指定勤務の終了時刻を返す
終了時刻()
機能 : 指定勤務の終了時刻を"時"単位の小数形式で返す
書式 : 終了時刻( 勤務番号 )
引数 : 勤務番号:省略時は割り当てようとしている勤務
戻り値: 小数形式で表した時
"8:00" → 8 "8:30" → 8.5 "8:15" → 8.25
勤務回数() 指定勤務の期日内回数
勤務回数()
機能 : 指定期日内での勤務割り当て回数を返す
書式 : 勤務日数( 勤務番号[,開始日] [,終了日] [,ID] )
引数 : 勤務番号:調査する勤務番号 省略時は全勤務が対象
開始日:調査期間の開始日 省略時は期間初日
終了日:同、終了日 省略時は期間末日
ID : 調査対象者のID 省略時は割り当て予定者のID
戻り値: 勤務回数
注意 :下旬で回数制限すると、確保不可の可能性増大
使用例
IDにより回数制限する期間を指定
432,435,438,439,441 1日〜9日 「
夜」
不可 A
572,573,574,575,576 10日〜19日 「
午」
1回まで
B
729,730,731,732,733 20日〜29日 勤務
7回まで
C
作成したシフト表
赤枠内が上記
A,B,C の制限を受けている
使用したスクリプト ID指定
グループで指定する場合は下記のように記述
VbScript 「Select Case」コマンド リファレンス
勤務の分散化
勤務種別表で「勤務間隔」を指定する方法の他に、本関数を使用することも可能
下図は、「
午」および「
▲」を期間内で分散化したもの
それぞれ
青枠には、「
午」および「
▲」が共に
1回しか割り当てられない。
青枠 内も同様。
あわせて、期間内で分散化されている。
使用したスクリプト
勤務日数() 指定勤務の総日数
勤務日数()
テンプレート
機能 : 指定勤務の総日数
書式 : 勤務日数( 勤務番号 [, 集計区分] [, ID])
引数 : 勤務番号:カウントする勤務番号 省略時は全勤務が対象
集計区分: 1〜7 日曜〜土曜 10 休日 11 平日
省略時は全ての日が対象
ID : 調べたい人のID 省略時は割り当て予定ID
戻り値: 総勤務日数
勤務時間() 指定勤務の総時間を返す
勤務時間()
テンプレート
機能 : 指定勤務の総時間を返す
書式 : 勤務時間( [勤務番号] )
引数 : 勤務番号:集計する勤務番号
省略時は全勤務が対象
戻り値: 総勤務時間
週間勤務日数() 当日を含む週内の勤務日数を返す
週間勤務日数()
テンプレート 実例集
機能 : 当日を含む週内の勤務日数を返す
書式 : 週間勤務日数( 勤務番号 [, 基点曜日] )
引数 : 勤務番号: カウントする勤務番号
省略時は全勤務が対象
基点 : 起点曜日を表す数値(省略時は0)
0:日曜 1〜7:日曜〜土曜
戻り値: 日数
★「
週刊勤務日数一覧」(シフト表解析)を使用して、作成済みのシフト表から解析可
記述例
勤務指定例:日勤制限-週内2日まで(日曜基点)
作成例:日曜基点の1週間(赤枠)
記述スクリプト:日勤(1)が2日を超えると不可
勤務指定例:勤務制限-全ての勤務を週内5日まで(日曜基点)
作成例:日曜基点の1週間(赤枠)
記述スクリプト:全ての勤務(勤務を省略)が5日を超えると不可
連続勤務日数() 当日前後の連続する勤務日数を返す
連続勤務日数()
テンプレート 実例集
機能 : 当日が勤務の場合に、前後の連続する勤務日数を返す
書式 : 連続勤務日数( [ID] )
引数 : ID番号 省略可(省略時は割り当て予定のID)
戻り値: 日数
連続休み日数() 当日前後の連続する休み日数を返す
連続勤務日数()
機能 : 当日が休みの場合に、前後の連続する休み日数を返す
書式 : 連続休み日数( [ID] )
引数 : ID番号 省略可(省略時は割り当て予定のID)
戻り値: 日数
休日勤務日数() 休日の勤務日数を返す
連続勤務日数()
機能 : 休日(定休日+祝日)における勤務日数を返す
書式 : 休日勤務日数( [ID] )
引数 : ID番号 省略可(省略時は割り当て予定のID)
戻り値: 日数
使用例
下図のように休日出勤(
赤枠出)数が
4〜10日と偏りが生じています。
ユーザースクリプトで、休日出勤が
8日を超える場合に
不可とすると・・・
全員が
8日以下(6,7,8)の休日出勤に収まりました。
過去指定勤務連続数() 前日以前の連続する勤務日数を返す
過去指定勤務連続数()
実例集 夜勤3,4連続必須(翌日を休み)
機能 : 前日以前の連続する勤務日数を返す
書式 : 過去指定勤務連続数( [勤務番号] )
引数 : 勤務番号 省略可(省略時は割り当て予定の勤務が対象)
戻り値: 日数(当日は含まない)
最小勤務間隔() 指定勤務間の日数を返す
最小勤務間隔()
機能 : 当日を起点として指定された勤務日までの日数を算出
書式 : 連最小勤務間隔( 勤務番号 [, ID] )
引数 : 勤務番号
ID:省略可(省略時はすべての人が対象)
戻り値: 日数(当日を0とする)
記述例
勤務指定例:ID=340 〜343の人の日勤の間隔を4日以上とする
'下記4名の「日勤」間隔は、3日以内は不可
'VB Script での記述例
if 最小勤務間隔(1,340)<=3 then JudgeKinmu=-1
if 最小勤務間隔(1,341)<=3 then JudgeKinmu=-1
if 最小勤務間隔(1,342)<=3 then JudgeKinmu=-1
if 最小勤務間隔(1,343)<=3 then JudgeKinmu=-1
if 最小勤務間隔(1,344)<=3 then JudgeKinmu=-1
作成結果
日(日勤)の間隔が
4日以上となっている。
補足
勤務人数() 当日の指定勤務が割り当てられている人数
勤務人数()
機能 : 当日の指定勤務が割り当てられている人数を返却
書式 : 勤務人数( 勤務番号 [, グループ番号] )
引数 : 勤務番号 勤務番号を表す数値
グループ番号 グループ番号を表す数値(省略可)
戻り値: 人数
記述例
ベテラン日勤が0人の場合は、新人の早出は不可
'VB Script での記述例
if 勤務人数(1,1)=0 and 勤務人数(2,3)>0 then JudgeKinmu=-1
作成結果
作成例サンプルファイル
勤務ID() 指定勤務が割り当てられているID
勤務ID()
実例集「同じ人と同じ勤務での2連続禁止」
機能 : 指定勤務が割り当てられている人のIDを返却
書式 : 勤務ID( 勤務番号 )
引数 : 勤務番号 検索したい勤務の番号
戻り値: 最初に見つかった人のID(見つからなかったら0)
組合せ回数() メンバー間の勤務組合せ回数
組合せ回数
機能 :指定勤務で指定ID間の組合せ回数を返す
書式 :組合せ回数 勤務番号 , ID1 , ID2 )
引数 :勤務番号
ID1 ID番号1
ID2 ID番号2
戻り値:回数
★「
組合せ回数一覧」(シフト表解析)を使用して、作成済みのシフト表から解析可
例1:同一日に
340と
341が勤務1となる組合せ回数を
1まで
if 組合せ回数(1,340,341) >1 then JudgeKinmu = -1
例2:同一日に
340と
341の組合せで、勤務
2と勤務
3の回数合計を
3まで
if ( 組合せ回数(2,340,341) +組合せ回数(3,340,341) ) >3 then JudgeKinmu = -1
例3:下図は青枠内のメンバーで、「
日勤」の組合せを期間内に
1回までとして制限
・作成結果
青枠内の人の組合せで、
赤枠がを
日勤の
同日勤務。最大一回となっている。
・スクリプト:(340〜344での2人の組み合わせを全て記述)
Option Explicit
function JudgeKinmu()'勤務可能判定
if 組合せ回数(1,340,341)>1 then JudgeKinmu=-1
if 組合せ回数(1,340,342)>1 then JudgeKinmu=-1
if 組合せ回数(1,340,343)>1 then JudgeKinmu=-1
if 組合せ回数(1,340,344)>1 then JudgeKinmu=-1
if 組合せ回数(1,341,342)>1 then JudgeKinmu=-1
if 組合せ回数(1,341,343)>1 then JudgeKinmu=-1
if 組合せ回数(1,341,344)>1 then JudgeKinmu=-1
if 組合せ回数(1,342,343)>1 then JudgeKinmu=-1
if 組合せ回数(1,342,344)>1 then JudgeKinmu=-1
if 組合せ回数(1,343,344)>1 then JudgeKinmu=-1
end function
必要人数() 要員設定で入力した勤務ごとの必要人数
必要人数()
機能 : 要員設定で入力した勤務ごとの必要人数を返却
書式 : 必要人数( 勤務番号 )
引数 : 勤務番号を表す数値
戻り値: 引数の勤務に必要な人数
割当済人数() 指定勤務に割当済みの人数を返す
割当済人数()
機能 : 指定勤務に割当済みの人数を返す
書式 : 割当済人数( 勤務番号 )
引数 : 勤務番号を表す数値
戻り値: 引数の勤務に割当済の人数
例:下記は、
全メンバーで勤務番号(=
7)の割り当てを
1名以下にする
意味
割り当てようとしている勤務番号が7で、
既に割り当てられている勤務番号(=7)が
1個以上の場合、割り当て
不可
出勤判定() 指定勤務が出勤勤務か公休などの休みかを返す
出勤判定()
実例集
機能 : 指定勤務が出勤勤務か公休などの休みかを返す
書式 : 出勤判定( 勤務番号 )
引数 : 勤務番号
戻り値: true-出勤 false-休み
試行回数() 全確保処理中の試行回数を返す
試行回数()
機能 : 全確保処理中の試行回数を返す
書式 : 試行回数()
引数 : 無し
戻り値: 確保処理中 - 試行回数を返す( >0 )
確保済み - 0
全員確保成功() 全確保処理中の試行回数を返す
全員確保成功()
機能 : 全員の確保が成功したかを判定
書式 : 全要員確保成功()
引数 : 無し
戻り値: true: 確保成功 false: 未
旧暦変換() 当日の日付を旧暦に変換
旧暦変換()
テンプレート
機能 : 当日の日付を旧暦に変換
書式 : 旧暦変換( 変換種別 )
引数 : 変換種別 0:旧暦日付 1:六曜 2:閏 3:干支
戻り値: 変換種別により戻り値が異なる
0:旧暦日付 - yyyymmdd の文字列形式
1:六曜 - "先勝" "友引" "先負" "大安" "仏滅" "赤口"
2:閏月 - ""(平月) "閏"(閏月)
3:干支 - "甲子"〜"癸亥"