どこの企業でも、人事労務業務を進めるにあたって独自のExcel帳票を作成していると思います。そしてほとんどの場合、過去の帳票をコピーして手入力した部分を削除し、ファイル名を書き換えたものをテンプレートとして使っていることでしょう。しかしそれでは、新しい機能を追加したいときに対応ができません。また「今はこれで動くからいいけど、いざというときのために何でこの関数で望む結果が表示されるのか知っておきたい」と思うこともあるでしょう。

そこで「マイクロソフトでWindows開発に13年間従事したのち社労士資格を取得・独立した」という異色の経歴をもつ加藤秀幸さんの著書『人事・労務担当者のためのExcel&Wordマニュアル』(以下、同書)から、人事労務業務において活用頻度が高い関数の使い方をみてみましょう。

※本記事は同書の内容を一部編集のうえ抜粋したものです。また、同書ならびに本記事の内容は「Microsoft365(旧称Office365)」をベースに2020年9月時点の情報に準拠して書かれたものであり、適用範囲はMicrosoft365およびOffice2013/2016/2019となっています。

法定超労働時間や遅刻早退時間の集計(IF関数)

条件によって処理を分けるときに使用するIF関数は、人事業務において最も利用頻度が高い関数の1つです。また、IF関数を理解することは他の関数(SUMIF関数、SUMIFS関数、COUNTIF関数、COUNTIFS関数など)への応用には必須となります。ここではIF関数の活用シーンと用法を解説します。

法定超労働時間の集計例

法定超労働時間は、一日の総労働時間が法定労働時間8時間を超えている場合に、総労働時間から法定労働時間を引いて算出します。一方、8時間を超えていない日の法定超労働時間は0となります(週40時間を超える労働時間は、この場合考慮しないことにします)。 このように条件により処理を分ける場合にIF関数を使用します。

遅刻早退時間の集計例

遅刻早退時間を計算する際は出勤の有無で処理を分けます。関数の中に関数を入れることを「入れ子」(または「ネスト」)といいます。複数の条件で処理を分岐させることができるのです。

勤務時間の端数処理(CEILING関数・FLOOR関数・MROUND関数)

目的に応じてCEILING関数(切り上げ)、FLOOR関数(切り捨て)、MROUND関数(30分未満切り捨て30分以上切り上げ)を使用します。

30分未満を切り上げる(CEILING関数)

CEILING関数は指定した基準値の倍数の中で最も近い値に数値を切り上げます。以下の3通りのやり方は結果がどれも同じになります。

30分未満を切り捨てる(FLOOR関数)

FLOOR関数は指定した基準値の倍数の中で最も近い値かつ0に近い値に数値を切り捨てます。以下の3通りのやり方は結果がどれも同じになります。

1時間未満の端数を30分未満切り捨て、30分以上切り上げる(MROUND関数)

30分未満切り捨て30分以上切り上げにしたいときは、目的の倍数に丸められた数値を求めるMROUND関数を使用します。以下の3通りのやり方は結果がどれも同じになります。

生年月日や入社日から現在の年齢や勤続年数を調べる(DATEDIF関数・TODAY関数)

社会保険や年次有給休暇付与を漏れなく手続きするには、従業員の生年月日や入社日から今日現在までの期間(法律上の年齢や勤続年月数)の正確な把握が必須です。開始日と終了日からDATEDIF関数で計算し、現在の日付はTODAY関数を使って把握します。

法律上の年齢を確認する(DATEDIF関数・TODAY関数)

法律上の年齢の数え方は、誕生日を起算日とし、誕生日の前日に満年齢となります(例:4月1日生まれの場合は翌年3月31日に満1歳となる)。ここでは中途採用した従業員をモデルに、介護保険料を徴収すべき年齢(40歳)を迎えているかどうかを、DATEDIF関数で開始日、終了日、単位(年)を指定して年齢を計算します。

勤続年月数を確認する(DATEDIF関数・TODAY関数)

勤続年数で付与日数が異なる年次有給休暇の事務は、DATEDIF関数で入社日から今日現在までの勤続年月数を計算することで付与日数を求めましょう。なお、数式の中で文字列を扱う場合はダブルコーテーションで囲みます(例:”年”や”か月”)