[[20070703133829]] 『有給休暇記録簿』(初心者) ページの最後に飛ぶ

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

 

『有給休暇記録簿』(初心者)
 だらだらと長くてすみませんが、早速質問させて頂きます。
 手書きの 有給休暇記録簿をEXCELの表で作りたいと思っています。

 有給休暇記録簿・・・手書き	
 取得日	休暇種別	   残日数 残時間	記事
 4月1日		   20	   0	   ・・・年度当初
 6月3日	年休(1日)   19	      0
 6月15日	半ネ(AM)   18.5     0	
 6月25日	2時間	     17.5     0.6	
 6月28日	半ネ(PM)   17       0.6	

 有給の種類に1日、半日、2時間の3種類があります。
 1日と半日は日単位の取得で処理しています。
 2時間休暇は時間単位で処理しています。
 6月25日の2時間休暇の場合
 17.5→17.3ではなく、時間単位の処理ということで
 17.5→16.5 と 0.6 となります
 17.5日のうち 1日を時間単位用といて0.8として
 2時間休暇 1回 0.8 → 0.6となります

 これをEXCELで作ろうと思っています。
 日単位のほうはこの学校の検索(IF文等)でなんとか
 計算できましたが、2時間休暇の処理の方法がわかりません。
 説明がへたで質問内容がわかり難いかもしれませんが
 B列は入力規制で選択で入力するようにしました。
 C列は非表示にしてあります。
 C列は以下の式をいれてあります。
 ・・・=IF(C3="年休(1日)","1",IF(C3="半ネ(AM)","0.5",IF(C3="半ネ(PM)","0.5",IF(C3="2時間","0.2",FALSE))))

 Sheet1	[A]	[B]	   [C]    [D]	   [E]		
 [1]	取得日	休暇種別		  残日数  残時間		
 [2]				    20	0	・・・年度当初
 [3]	7月3日	年休(1日) 1           19	0	
 [4]		半ネ(AM) 0.5       18.5	0		
 [5]		2時間	  0.2      17.5	0.6	
 [6]		半ネ(PM) 0.5      17	     0.6

 残時間が0の場合 残日数のところから、0.8ももってきて
 処理をするには どういう処理をすれば上の手書きのような表が
 できるでしょうか。だらだら書くばかりで説明しきれていないかも
 しれませんが、宜しくお願いします。


 >有給の種類に1日、半日、2時間の3種類があります
条件がこれだけとして
次のような表で(C列の数式で文字列を返して非表示にする意味がわからないので)
      A          B         C    D
[1] 取得日	休暇種別     残日数   残時間
[2]               年度当初       20	
[3]7月3日	       年休(1日)     19       0
[4]7月4日	       半ネ(AM)    18.5      0
[5]7月5日	       2時間	     17.5	     0.6
[6]7月6日	       半ネ(PM)     17      0.6
[7]7月7日	       2時間           17      0.4
 
 C3に=IF(B3="年休(1日)",C2-1,IF(ISNUMBER(FIND("半ネ",B3)),C2-0.5,IF(AND(B3="2時間",D2<0.2),C2-1,C2)))
 D3に=IF(AND(B3="2時間",D2<0.2),0.8+D2-0.2,IF(B3<>"2時間",D2,D2-0.2))
として下にコピーでどうでしょうか?
                                (oni)

 oniさん。出来ました。やりたいことはこれでした。!!
 ISNUMBER、FIND 意味がわかない言葉は、調べてみます。
 式も長いので、自分なりに意味がわかるよに確認してみます。

 次のような表で(C列の数式で文字列を返して非表示にする意味がわからないので)
 ・・・については,表はなるべく手書きのものと同じに見せたかったからで
 他には意図はありませんでした。
 有難うございました。(初心者)

 もうごらんになってないかもしれませんが・・・(汗
上の表で年度当初日数の位置を訂正しました。m(_ _)m
また、C,D列の数式を↓に替えて頂くとB列未入力時にC,D列も非表示になります。
C3 =IF(B3="","",IF(B3="年休(1日)",C2-1,IF(ISNUMBER(FIND("半ネ",B3)),C2-0.5,IF(AND(B3="2時間",D2<0.2),C2-1,C2))))
D3 =IF(B3="","",IF(AND(B3="2時間",D2<0.2),0.8+D2-0.2,IF(B3<>"2時間",D2,D2-0.2)))
式はベタなのでひとつひとつのIF文をセルに入れて検証すれば、初心者さんの
おっしゃったことをそのまま並べただけというのがわかると思います。
                                  (oni)

 oniさん。有難うございます。
 上記の式使わせて頂きます。が、今あれこれ点検していますが
 2時間を4回取得した場合の7月6日のD列は 
 残日数=19日 残時間 0(0は非表示扱い)と だしたい
 のですすが下記なような

 [1] 取得日	休暇種別      残日数   残時間
 [2] 年度当初              20	
 [3]7月3日	2時間	       19      0.6
 [4]7月4日	2時間          19      0.4
 [5]7月5日	2時間          19      0.2
 [6]7月6日	2時間          19  5.55112E-17
 [7]	                19  5.55112E-17
 とエラーのような数字がで出ています。数回新規にやってみたのですが
 同じです。最初の確認でこれを確認していませんでした。
 oniさんのプランでは 
 [1] 取得日	休暇種別      残日数   残時間
 [2] 年度当初              20	
 [3]7月3日	2時間	       19      0.6
 [4]7月4日	2時間          19      0.4
 [5]7月5日	2時間          19      0.2
 [6]7月6日	2時間          19    
 [7]7月6日	2時間          18   0.6
 でしょうか。
 私の作成方法がどこかおかしいのでしょうか。
 追加で教えて頂いた式でも同じような状態になります。
 記入の方法がいけないのでしょうか。
 宜しければ、教えて頂けないでしょうか。(初心者)

 	                   
          
                   


 スレッドをすべてみたわけではないので外しているかもしれません。。。

 小数の計算による演算誤差の可能性大です。
 ROUND関数で丸め処理を行えば、問題は解消されると思います。
 (ROUGE)

 初心者さん検証不足でゴメンナサイm(_ _"m)
ROUGEさんの仰るとおりのようです。

              A       B      C       D
[1]        取得日休	暇種別       残日数	残時間
[2]        	       年度当初	       20	
[3]          7月3日	2時間	       19	         0.6
[4]          7月4日	年休(1日)    18  	0.6
[5]          7月5日	2時間	       18  	0.4
[6]          7月6日	2時間	       18	         0.2
[7]          7月7日	2時間	       18	         0
[8]          7月8日	半ネ	       17.5	0
[9]          7月9日	2時間	       16.5	0.6
[10]        7月10日	2時間          16.5	0.4
[11]        7月11日	2時間	       16.5	0.2
[12]        7月12日	2時間          16.5	0
 
 C3=IF(B3="","",IF(B3="年休(1日)",C2-1,IF(ISNUMBER(FIND("半ネ",B3)),C2-0.5,IF(AND(B3="2時間",D2=0),C2-1,C2))))
 D3=IF(B3="","",IF(AND(B3="2時間",D2=0),0.8-0.2,IF(B3<>"2時間",D2,ROUND(D2-0.2,2))))
としてみて下さい。
2時間単位ということは、残時間 0.2 で次に2時間の休みを取ったときは 0 になりますので
少し数式を変えてあります。
 
 また、残時間 0 の時に非表示にするには、条件付書式でどうでしょう?
D列の必要範囲を選択し
書式→条件付書式とし
数式が =d3=0 として 書式のフォントを白にします。
                                  (oni)

 ROUGEさん。oniさん。有難うございます。
 まず、ROUGEさんのROUND関数 HELPで確認して四捨五入ということが
 わかり、式にあれこれあてはめてみましたが、わかりませんでした。
 再度、学校をのぞいたら、oniさんがすでに修正して頂いていて
 やってみましたら希望通りになりました。
 あつかましいのですが、もうひとついいでしょうか?
 提案して頂いた
 書式→条件付書式とし
 数式が =d3=0 として 書式のフォントを白にします。・・・ですが
 設定しても文字色が白くならないのですが。
 単純にG3セルに数字の0をいれて
 書式→条件付書式とし
 数式が =G3=0 として 書式のフォントを白にすると文字色は白くなり
 見かけ上はきえます。
 式によってでた値を扱う場合は何か特別な設定(方法)があるので
 しょうか。(初心者)

   


 それでいいと思います。
 が、今回の場合は「数式が」とするまでもなく、
 「セルの値が」「次の値に等しい」「0」
 でOKのはずです。
 (ROUGE)

 オヤ?
チトPCの前を離れたら、またもROUGEさんにフォロー頂いて
いつもありがとうございます。
 
 >文字色が白くならないのですが。
 
 >>D列の必要範囲を選択し
 ↑こちらは、ダイジョウブでしょうか?再度ご確認を
間違いないなら、ROUGEさんの仰る方法をお試し下さい。
それでダメなら、
どのようにして、どうなったかを教えて下さいな
                        (oni)

 ROUGEさん。oniさん。お二人とも有難うございます。

 D列を範囲指定しています。

 「セルの値が」「次の値に等しい」「0」でも同じでした。
 質問してお気ながら申し訳ありませんが
 睡魔が襲ってきましたので、明日再度挑戦してみます。
 結果について報告させて頂きます。(初心者)


 まだ演算誤差が残っているのかも。

 数式が =ROUND(D3,1)=0

 としたらどうなりますか?
 (ROUGE)

 再挑戦した結果をお知らせします。
 今ある表はやはりダメでした。
 そこで、 新しいシートに表、計算式を書いてみました。
 セルの値が」「次の値に等しい」「0」の方法も
 数式が =d3=0 の方法も両方 文字が白色になりました。
 おかげ様で表自体も見易くなりました。有難うございました。
 本当の原因はよくわかりませんが、先に進むことが出来ました。
 oniさん、ROUGEさん、貴重なアドバイス有難うございました。
 (初心者)


コメント返信:

[ 一覧(最新更新順) ]


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