[[20160827164359]] 『出勤簿について』(なやめ) ページの最後に飛ぶ

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

 

『出勤簿について』(なやめ)

出勤簿について質問です。下記の表より遅刻・早退の文字を拾い出す関数はありますか?
  
    出勤  退勤  遅刻  早退  休暇
7/1  8:20  17:00

7/2  9:20  17:00 -1.0        半休

7/3  9:20  17:00 -1.0

7/4  8:20  16:00     -1.0

7/5  9:20  16:00 -1.0  -1.0   

【例】上記表から別の表に反映させたいのですが、休暇の列に半休とあったら
   空白になり、そうでなければ、遅刻OR早退とA1に表示、また両方あった場合も空白とします。ちなみに遅刻&早退の数字(-1.0)はVLOOKUPで拾っていますので、出勤時間が8:00だとブランクと認識していて、8:20だと0と認識しているようです。

    7/1    7/2   7/3   7/4  7/5
 A1  空白   空白   遅刻  早退  空白
 A2  空白   空白   -1.0  -1.0  -2.0

宜しくお願い致します。

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


 出勤簿がSheet1にあって、別表がSheet2である場合

 (1) A2セル =CHOOSE(MIN(5,SUMPRODUCT((INDEX(Sheet1!$D$2:$F$30,MATCH(A$1,Sheet1!$A$2:$A$32,0),0)={-1,-1,"半休"})*{1,2,4})+1),"","遅刻","早退","","")
 (2) A3セル =CHOOSE(SUMPRODUCT((INDEX(Sheet1!$D$2:$F$30,MATCH(A$1,Sheet1!$A$2:$A$32,0),0)={-1,-1,"半休"})*{1,2,4})+1,"",-1,-1,-2,"","","",-2)

 それぞれ、右にコピー

 <Sheet2 結果図>
  行  _A_  _B_  __C__  __D__  __E__
   1  7/1  7/2  7/3    7/4    7/5  
   2            遅刻   早退        
   3            -1.0   -1.0   -2.0 

 一つ、引っかかるんですが・・

 こう云うデータが(もし)あったら、どうなればいいんでしょうねぇ?
  ↓
  行  _A_  __B__  __C__  __D__  __E__  __F__
   1       出勤   退勤   遅刻   早退   休暇 
   7  7/6   ?      ?    -1.0   -1.0   半休 

 「空白」のような、「-2.0」のような、「-1.0」のような・・・・

(半平太) 2016/08/27(土) 19:37


半平太さん

コメントありがとうございます。
ご回答頂いた式を当てはめてみましたが遅刻OR早退が-1.0の時はうまくいきますが、-3.5など-1.0以外だと空白になってしまします。
また半平太さんが引っかかっていた件は出勤と退勤に時間の入力がなければD・E・F列は空白となります。
(時間の入力によりVLOOKUPでひろってきているからです。)(F列は入力しています)
できればご回答頂いた式の解説を頂けると何かヒントとなり、自分でもこの式をもとに工夫が出来るかもしれないのですが、お手数でなければお願い致します。自分でも色々調べて工夫してみます。

(なやめ) 2016/08/29(月) 09:34


 >ご回答頂いた式を当てはめてみましたが遅刻OR早退が-1.0の時はうまくいきますが、
 >-3.5など-1.0以外だと空白になってしまします。 

 1.そうなるように作りました。
 例示を見たら、遅刻と・早退はいつも「-1.0」なのだなと、解釈してしまったので。。。

 2.私が引っかかっているのは、下のケースです。

  行  __D__  __E__  __F__
   1  遅刻   早退   休暇 
   7  -1.5     -2   半休 

 早退・遅刻にマイナスがあって、半休もあった場合、どう云う結果になればいいのかな?・・と。
 (そんなデータはないのかもしれないですが、こちらでは判断しかねます)

(半平太) 2016/08/29(月) 11:20


半平太様

こちらの言葉が足りなくでご迷惑お掛けしております。
2のケースだと半休がありますので、数字は反映しなようにしたいです。半休の言葉がなければ、-3.5(-1.5+-2)の値が表示されるようにしたいです。
宜しくお願い致します。
(なやめ) 2016/08/29(月) 11:56


 エラく長くなります。(もっと短い回答が出て来るといいですね。もう少し、待ってみるといいと思います。)

 (1) A2セル 
 =IF(INDEX(Sheet1!$F$2:$F$30,MATCH(A$1,Sheet1!$A$2:$A$32,0),1)="半休","",CHOOSE(SUMPRODUCT(ISNUMBER(INDEX(Sheet1!$D$2:$E$30,MATCH(A$1,Sheet1!$A$2:$A$32,0),0))*{1,2})+1,"","遅刻","早退",""))

 (2) A3セル 
  =IF(INDEX(Sheet1!$F$2:$F$30,MATCH(A$1,Sheet1!$A$2:$A$32,0),1)="半休","",CHOOSE(SUMPRODUCT(ISNUMBER(INDEX(Sheet1!$D$2:$E$30,MATCH(A$1,Sheet1!$A$2:$A$32,0),0))*{1,2})+1,"",INDEX(Sheet1!$D$2:$D$30,MATCH(A$1,Sheet1!$A$2:$A$32,0),1),INDEX(Sheet1!$E$2:$E$30,MATCH(A$1,Sheet1!$A$2:$A$32,0),1),SUM(INDEX(Sheet1!$D$2:$E$30,MATCH(A$1,Sheet1!$A$2:$A$32,0),0))))

 <Sheet2 結果図>
  行  _A_  _B_  __C__  __D__  __E__  _F_  __G__
   1  7/1  7/2  7/3    7/4    7/5    7/6  7/7  
   2            遅刻   早退                    
   3            -1.0   -1.5   -3.0        -3.5 

 <Sheet1 サンプル>
  行  _A_  __B__  __C__  __D__  __E__  __F__
   1       出勤   退勤   遅刻   早退   休暇 
   2  7/1  8:20   17:00                     
   3  7/2  9:20   17:00    -1          半休 
   4  7/3  9:20   17:00    -1               
   5  7/4  8:20   16:00         -1.5        
   6  7/5  9:20   16:00    -2     -1        
   7  7/6  9:20   16:00  -1.5     -2   半休 
   8  7/7  9:20   16:00  -1.5     -2        

 ※解説はしんどいので、申訳ないですが、省略させていただきます。

(半平太) 2016/08/29(月) 12:15


半平太様

ありがとうございます。最初はIF関数などで四苦八苦していて・・・条件が複雑なので長くなって当然ですよね。ちゃんと勉強できていない私には未知の領域となっておりました。お知恵を頂き本当にありがとうございます。

(なやめ) 2016/08/29(月) 13:53


コメント返信:

[ 一覧(最新更新順) ]


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