[[20170731220830]] 『有給の計算』(ろでっち) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『有給の計算』(ろでっち)

度々失礼いたします。

今度は有給休暇の取得表を作ろうと考えているのですが、色々調べても私には作成することができなかったため、こちらでご質問させていただきました。

条件として、
1.有給休暇は年に20日。
2.半日休暇・時間休暇が取れる。

以下が私が頭をひねってもできなかったところなんですが。
3.半日休暇は1日休暇―0.5日で計算できる。
4.「勤務時間は7.5時間だが、時間休は8時間で1日とする」
5.時間給が取れる制限は、年に5日まで(つまり40時間までとする)
6.半日休暇と時間休暇は合わせて取ることができる。(つまり半日+1時間というとり方が可能)
7.4時間を半日休暇とはしない。

という条件があります。

つまり、有給1日を取得すると、残りは19日。
この状態で半日を取得すると18.5日。
この状態で2時間を取ると17.5日+6時間
となります。
つまり、時間休暇は使ったその時点で1日休暇をつぶし、残りを時間休暇で使わなければいけません。

休暇全てを時間として考えられれば楽なのですが、条件4により、20×7.5=150時間
しかし時間休ですべて取る場合は、20×8=160時間となってしまい、整合性が取れません。
ですので、時間休8時間を取り切った時点で1日分の有給を取り切ったと考えなければならなくなってしまいます。

やはり一番難しいのが、「8時間を1日とする」という点と、「勤務時間は7.5時間」という点を解決する手段がわかりません。

何か良いヒントや解決方法があれば何卒ご教授願います。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


 レイアウト(未完成であっても、ベースとなる部分)と2,3のサンプルデータを例示していただく訳にはいきませんか?

(半平太) 2017/07/31(月) 23:14


おはようございます。
微力ながら、思い付いたことを述べさせていただきます。

単純に休暇を全て時間計算させることができれば解決するということであれば、計算用の行を非表示で挟んでおいて、「1日休暇」を取得した日を「8時間」と置き換えてから計算に利用するのはいかがでしょうか。

全てを時間計算するとすると、半日休暇の扱いが何時間になるのが適切なのか、さらりと読んだだけでは分からないのですが...

思い付きで恐れ入りますが、ご参考までに。
(きゅうり婦人) 2017/08/01(火) 08:32


すいません、簡単なレイアウトを申し上げます。
A列には表題が入ります。
31日までにすると長くなってしまうので、仮に4月1日〜4月5日までと仮定します。

一行目には日付が入ります。(B1〜F1)
二行目には「残日数(取得前)」が入ります(B2〜F2)
三行目には「残時間(時間単位)」が入ります。(B3〜F3)
四行目には「取得分(日単位)が入ります。(B4〜F4)
五行目には「取得分(時間単位)」が入ります。」(B5〜F5)
六行目には「残日数(日単位)」が入ります(B6〜F6)
七行目には「残時間(時間単位)が入ります(B7〜F7)

この状態で、4月1日に1日有給を取るとします
   B
1  4月1日
2  20
3  40
3  1
4  0
5  19
6  40

となります。
この状態で4月2日に2時間の有給を取ったとします。
   C
1  4月2日
2  19
3  40
4  0
5  2
6  18
7  38

となります。
この状態で4月3日に半日休暇を取ったとします。
   D
1  4月3日
2  18
3  38
4  0.5
5  0
6  17.5
7  38

では、この状態で4月4日に「7時間の有給を取ると」どうなるのかというと。
   E
1  4月4日
2  18
3  38
4  0
5  7
6  16.5
7  31
となります。

かなりややこしくてすいません。
私自身も書いていて頭がこんがらがってきてしまいました。

つまりは、1・0.5日単位の有給は、普通に20から引けばよいが、時間休暇は8時間で1時間となる。
ということになります。
本当にややこしくてすいません(汗
(ろでっち) 2017/08/01(火) 10:47


すいいません、訂正箇所があったので、全文書き直します。
先のコメントは無視してください。
すいません、簡単なレイアウトを申し上げます。
A列には表題が入ります。
31日までにすると長くなってしまうので、仮に4月1日〜4月5日までと仮定します。
一行目には日付が入ります。(B1〜F1)
二行目には「残日数(取得前)」が入ります(B2〜F2)
三行目には「残時間(時間単位)」が入ります。(B3〜F3)
四行目には「取得分(日単位)が入ります。(B4〜F4)
五行目には「取得分(時間単位)」が入ります。」(B5〜F5)
六行目には「残日数(日単位)」が入ります(B6〜F6)
七行目には「残時間(時間単位)が入ります(B7〜F7)
この状態で、4月1日に1日有給を取るとします
   B
1  4月1日
2  20
3  40
3  1
4  0
5  19
6  40
となります。
この状態で4月2日に2時間の有給を取ったとします。
   C
1  4月2日
2  19
3  40
4  0
5  2
6  18
7  38
となります。
この状態で4月3日に半日休暇を取ったとします。
   D
1  4月3日
2  18
3  38
4  0.5
5  0
6  17.5
7  38

では、この状態で4月4日に「7時間の有給を取ると」どうなるのかというと。
   E
1  4月4日
2  17.5
3  38
4  0
5  7
6  16.5
7  31
となります。

では、この状態で4月4日に「6時間の有給を取ると」どうなるのかというと。
   E
1  4月4日
2  17.5
3  38
4  0
5  6
6  17.5
7  32

しかし、7時間の有給だとこうなります
   E
1  4月4日
2  17.5
3  38
4  0
5  7
6  16.5
7  31

となります。
かなりややこしくてすいません。
私自身も書いていて頭がこんがらがってきてしまいました。
つまりは、1・0.5日単位の有給は、普通に20から引けばよいが、時間休暇は8時間で1日となる。
ということになります。
本当にややこしくてすいません(汗
(ろでっち) 2017/08/01(火) 10:55


すいません、焦ってまた間違えてしまいました。

全文書き直します。
先のコメントは無視してください。
すいません、簡単なレイアウトを申し上げます。
A列には表題が入ります。
31日までにすると長くなってしまうので、仮に4月1日〜4月5日までと仮定します。
一行目には日付が入ります。(B1〜F1)
二行目には「残日数(取得前)」が入ります(B2〜F2)
三行目には「残時間(時間単位)」が入ります。(B3〜F3)
四行目には「取得分(日単位)が入ります。(B4〜F4)
五行目には「取得分(時間単位)」が入ります。」(B5〜F5)
六行目には「残日数(日単位)」が入ります(B6〜F6)
七行目には「残時間(時間単位)が入ります(B7〜F7)
この状態で、4月1日に1日有給を取るとします
   B
1  4月1日
2  20
3  40
3  1
4  0
5  19
6  40
となります。
この状態で4月2日に2時間の有給を取ったとします。
   C
1  4月2日
2  19
3  40
4  0
5  2
6  18
7  38
となります。
この状態で4月3日に半日休暇を取ったとします。
   D
1  4月3日
2  18
3  38
4  0.5
5  0
6  17.5
7  38

では、この状態で4月4日に「6時間の有給を取ると」どうなるのかというと。
   E
1  4月4日
2  17.5
3  38
4  0
5  6
6  17.5
7  32
しかし、7時間の有給だとこうなります
   E
1  4月4日
2  17.5
3  38
4  0
5  7
6  16.5
7  31
となります。
かなりややこしくてすいません。
私自身も書いていて頭がこんがらがってきてしまいました。
つまりは、1・0.5日単位の有給は、普通に20から引けばよいが、時間休暇は8時間で1日となる。
ということになります。
本当にややこしくてすいません(汗
(ろでっち) 2017/08/01(火) 10:55
(ろでっち) 2017/08/01(火) 10:59


 確かにややこしいですね。

 現在のレイアウトだと、1日を潰して作った時間休の残高管理がし辛いです。
 延いては、時間休を取った時、残日数から借りるのか否か、判定がし辛くなっています。

 下図の様なレイアウトに出来ませんか?
 ※新設4、9行が目障りなら、非表示処理とか、その2行だけ下の方に移動するとか。

 (1) C2セル =B7
 (2) C3セル =B8
 (3) C4セル =B9
 以上、各数式を右へコピー

 (4) B7セル =B2-B5-(B4<B6)
 (5) B8セル =MIN(B7,INT((B3-B6)/8))*8+MOD(B3-B6,8)
 (6) B9セル =MIN(B8,MOD(B4-B6+8,8))
 以上、各数式を右へコピー

 <結果図>
  行  __________A__________  ___B___  ___C___  ___D___  ___E___  ___F___
   1  日付                   4月1日   4月2日   4月3日   4月4日   4月5日 
   2  残日数(前)                 20       19       18     17.5     16.5 
   3  残時間(前)                 40       40       38       38       31 
   4  日取崩猶予休時間(前)        0        0        6        6        7 
   5  当日取得(日)                1        0      0.5        0          
   6  当日取得(時)                0        2        0        7          
   7  残日数(日)                19       18     17.5     16.5     16.5 
   8  残日数(時)                40       38       38       31       31 
   9  日取崩猶予休時間            0        6        6        7        7 

(半平太) 2017/08/01(火) 12:51


半平太様。
大変ご丁寧なコメントありがとうございます。

今必死で数式を理解しようとしていますが・・・(どうも私のスキルでは無理かもしれません(汗)

その際はまたご質問させていただきたいと思いますが、よろしくお願い申し上げます。

っと、つきましては、非常に初歩的な質問をさせてください。

=B2-B5-(B4<B6)

のB4<B6

は不等式なので、TrueかFalseが返ってくると思うのですが、なぜここに入れ込むことができるのでしょうか?
すいません、不等式はIF文頭の条件分岐でしか使ったことがなかったもので・・・。
(ろでっち) 2017/08/01(火) 13:55


 (B4<B6)*1、または (B4<B6)+0 とすれば、理解できるかと思います。 式を短く書く、小技ですね。 全然初歩的ではなく、ベテランのテクニックですよ。
 (個人的には、他言語では通用しない場合があるので、お薦めしないです)
(???) 2017/08/01(火) 14:54

>???様
コメントありがとうございます。
上記の内容の関数を走らせてみて理解できました!

>半平太様
おかげさまで、頂いた関数で動作させることはできました!
ありがとうございました!

あとはきっちり理解できるようにして、応用できるように努力してみます。
(ろでっち) 2017/08/01(火) 15:42


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.