[Access 2016/2013/2010/2007]
「入社日が属する月」から「退社日が属する月」までを勤続年月として求めます(図1)。例えば、「2017/4/1入社、2017/6/30日退社」の人も、「2017年4/10入社、2017/6/10退社」の人も、勤続年月は「0年3カ月」とみなします。
手順ダイジェスト
勤続月: DateDiff("m",[入社日],[退社日])+1
勤続年月: [勤続月]¥12 & "年" & [勤続月] Mod 12 & "カ月"
手順解説
Step1 DateDiff関数で勤続月数を求める
Accessで2つの日時の間隔を求めるにはDateDiff関数を使用します(構文1、正式な構文はDateDiff関数のページを参照してください)。
構文1 2つの日時の間隔を求める
DateDiff(単位, 日時1, 日時2)
引数[単位]に「"m"」を指定すると、月単位の間隔が求められます。といっても「満」の月数が求められるわけではありません。[日時1]と[日時2]の間の月をまたいだ回数が求められるのです(図2)。
したがって、DateDiff関数で求めた月数に「1」を加算すれば、「入社日が属する月」から「退社日が属する月」までの勤続月数が求められます(式1、図3、図4)。
式1 入社月と退社月をそれぞれ1カ月在籍とみなして勤続月数を求める
勤続月: DateDiff("m",[入社日],[退社日])+1
Step2 勤続月をもとに勤続年月を求める
勤続月がわかったら、あとは簡単。「¥」演算子と「Mod」演算子を使用して、勤続月を年数と月数に分解します。「¥」演算子は割り算の答えの整数部分を、「Mod」演算子は割り算の答えの余りを求める演算子です。例えば、「9 ÷ 4 = 2 余り 1」なので、「9 ¥ 4」の結果は「2」、「9 Mod 4」の結果は「1」となります。
数値1 ¥ 数値2 : 数値1を数値2で割った答えの整数部分を求める
数値1 Mod 数値2 : 数値1を数値2で割った答えの余りを求める
[勤続月]フィールドの数値を「〇年〇カ月」の形式で表示するには、式2のように式を立てます(図5、図6)。
式2 入社月と退社月をそれぞれ1カ月在籍と見なして勤続年月数を求める
勤続年月: [勤続月]¥12 & "年" & [勤続月] Mod 12 & "カ月"
なお、ここでは勤続年月を求めるための下準備として[勤続月]フィールドを用意しましたが、式3のように式を立てれば1つの式で勤続年月を求められます。