Page 1 of 1

สิทธิ์การลาคงเหลือแบบวัน ชั่วโมง และนาที

Posted: Tue Dec 04, 2018 8:19 pm
by duean1983
ต้องการหาสิทธิ์วันลาคงเหลือ
โดยที่ต้องการหา
1. ต้องการหาสูตรที่ใส่รหัสตรงคอลัมภ์ I แล้ว ชื่อพนักงาน สิทธิ์การลาที่ใช้ไปทั้งหมดที่ใช้ไปของพนักงานแต่ละคน ปรากฏอยู่ตรงคอลัมภ์ K-T
2. ต้องการหาสูตรในการคำนวณหาสิทธิ์คงเหลือของพนักงาน ว่าเหลือกี่วัน กี่ชั่วโมงและกี่นาที
3. โดยใน 1 วัน พนักงานทำงานทั้งหมด 8 ชั่วโมง 40 นาที (เริ่ม 08.00-12.20 น. พักเที่ยง 12.20-13.20 น. และเริ่มงานเวลา 13.20-17.40 น.) โดยหากลา 1/2 วัน ก็อยู่ที่ 4 ชั่วโมง 20 นาที
4. โดยหากช่องนาทีผลรวมมากกว่า 60 นาที ให้ไปบวกเพิ่มในช่องชั่วโมง
5. และในช่องชั่วโมง = 8 และช่อง นาที = 40 ให้ไปบวกเพิ่มในช่องวันลานั้นๆ
1.png
2.png
โดยพนักงานคนอื่นๆก็เหมือนกันค่ะ ทั้งลากิจและลาป่วย ก็เหมือนกันกับลาพักร้อนค่ะ
สิทธิ์การลาคงเหลือ.xlsx

Re: สิทธิ์การลาคงเหลือแบบวัน ชั่วโมง และนาที

Posted: Wed Dec 05, 2018 12:47 am
by DhitiBank
ลองแบบนี้ครับ

J4
=VLOOKUP(I4,$A$3:$B$20,2,0)

K4
=SUMIFS($E$3:$E$20,$A$3:$A$20,$I4,$C$3:$C$20,LOOKUP(CHAR(255),$K$2:K$2))+(SUMIFS($F$3:$F$20,$A$3:$A$20,$I4,$C$3:$C$20,LOOKUP(CHAR(255),$K$2:K$2))+
SUMIFS($G$3:$G$20,$A$3:$A$20,$I4,$C$3:$C$20,LOOKUP(CHAR(255),$K$2:K$2))/60>8+4/6)

L4
=INT(MOD((SUMIFS($F$3:$F$20,$A$3:$A$20,$I4,$C$3:$C$20,LOOKUP(CHAR(255),$K$2:K$2))+
SUMIFS($G$3:$G$20,$A$3:$A$20,$I4,$C$3:$C$20,LOOKUP(CHAR(255),$K$2:K$2))/60)/24,"8:40")*24)

M4
=INT(MOD(MOD((SUMIFS($F$3:$F$20,$A$3:$A$20,$I4,$C$3:$C$20,LOOKUP(CHAR(255),$K$2:L$2))+
SUMIFS($G$3:$G$20,$A$3:$A$20,$I4,$C$3:$C$20,LOOKUP(CHAR(255),$K$2:L$2))/60)/24,"8:40")*24,1)*60)

คัดลอกสูตรใน K4:M4 ไปวางไว้ที่ N4:P4 และ Q4:S4 ตามลำดับครับ

T4
=SUMIFS($G$3:$G$20,$A$3:$A$20,$I4,$C$3:$C$20,T$2)

AD4
=U4-K4-(L4+M4>0)
AE4
=INT((IF(L4+M4>0,TIME(8,40,1))-TIME(L4,M4,))*24)
AF4
=INT(MOD(IF(L4+M4>0,TIME(8,40,1))-TIME(L4,M4,),1/24)*24*60)
คัดลอกสูตรใน AD4:AF4 ไปวางไว้ที่ AG4:AI4 และ AJ4:AL4 ตามลำดับ

จากนั้นคัดลอกสูตรทั้งหมดลงล่างครับ

Re: สิทธิ์การลาคงเหลือแบบวัน ชั่วโมง และนาที

Posted: Wed Dec 05, 2018 8:01 pm
by duean1983
ได้แล้วค่ะ ขอบคุณมากค่ะ

Re: สิทธิ์การลาคงเหลือแบบวัน ชั่วโมง และนาที

Posted: Sun Jan 06, 2019 1:32 pm
by duean1983
รบกวนสอบถามค่ะ พอเอาข้อมูลพนักงานมาลงเยอะๆแล้ว ผลรวมสิทธิ์การลาที่ใช้ไปยังไม่ถูกต้องค่ะ

เช่น
พนักงานรหัส 800005 C พักร้อน สูตรรวมได้ 6 วัน 7 ชั่วโมง 59 นาที แต่ที่พนักงานลารวมทั้งหมดจริงๆที่ถูกต้องคือ 7 วัน 7 ชั่วโมง
พนักงานรหัส 800006 D พักร้อน สูตรรวมได้ 12 วัน แต่ที่พนักงานลารวมทั้งหมดจริงๆที่ถูกต้องคือ 13 วัน
พนักงานรหัส 800008 F พักร้อน สูตรรวมได้ 14 วัน 7 ชั่วโมง 9 นาที แต่ที่พนักงานลารวมทั้งหมดจริงๆที่ถูกต้องคือ 14 วัน 7 ชั่วโมง 10 นาที
1.png
สิทธิ์การลาคงเหลือ (1).xlsx

Re: สิทธิ์การลาคงเหลือแบบวัน ชั่วโมง และนาที

Posted: Sun Jan 06, 2019 10:52 pm
by Bo_ry
K5
=INT(SUMPRODUCT(MMULT($E$3:$G$390,{480;60;1}),($A$3:$A$390=$I4)*($C$3:$C$390=LOOKUP("ๆ",$K$2:K$2)))/480)

L5
=INT(MOD(SUMPRODUCT(MMULT($E$3:$G$390,{480;60;1}),($A$3:$A$390=$I4)*($C$3:$C$390=LOOKUP("ๆ",$K$2:K$2))),480)/60)

M5
=MOD(SUMPRODUCT(MMULT($E$3:$G$390,{480;60;1}),($A$3:$A$390=$I4)*($C$3:$C$390=LOOKUP("ๆ",$K$2:K$2))),60)

K5:M5 ลากลง แล้ว copy ไป N5, Q5


AD5
=QUOTIENT(SUMPRODUCT(U4:W4-K4:M4,{480,60,1}),480)
AE5
=SIGN(AD4)*INT(MOD(ABS(SUMPRODUCT(U4:W4-K4:M4,{480,60,1})),480)/60)
AF5
=SIGN(AD4)*MOD(ABS(SUMPRODUCT(U4:W4-K4:M4,{480,60,1})),60)

AD5:AF5 ลากลง แล้ว copy ไป AG5, AJ5

Re: สิทธิ์การลาคงเหลือแบบวัน ชั่วโมง และนาที

Posted: Tue Jan 08, 2019 2:01 am
by DhitiBank
ปรับสูตรเดิมโดยให้คิดจากนาทีแทนครับ ผมดันไปเขียนให้คิดจากวัน

K4
=INT((SUMIFS($E$3:$E$390,$A$3:$A$390,$I4,$C$3:$C$390,LOOKUP(CHAR(255),$K$2:K$2))*520+SUMIFS($F$3:$F$390,$A$3:$A$390,$I4,$C$3:$C$390,LOOKUP(CHAR(255),$K$2:K$2))*60+
SUMIFS($G$3:$G$390,$A$3:$A$390,$I4,$C$3:$C$390,LOOKUP(CHAR(255),$K$2:K$2)))/520)

L4
=INT(MOD(SUMIFS($E$3:$E$390,$A$3:$A$390,$I4,$C$3:$C$390,LOOKUP(CHAR(255),$K$2:K$2))*520+SUMIFS($F$3:$F$390,$A$3:$A$390,$I4,$C$3:$C$390,LOOKUP(CHAR(255),$K$2:K$2))*60+
SUMIFS($G$3:$G$390,$A$3:$A$390,$I4,$C$3:$C$390,LOOKUP(CHAR(255),$K$2:K$2)),520)/60)

M4
=MOD(MOD(SUMIFS($E$3:$E$390,$A$3:$A$390,$I4,$C$3:$C$390,LOOKUP(CHAR(255),$K$2:K$2))*520+SUMIFS($F$3:$F$390,$A$3:$A$390,$I4,$C$3:$C$390,LOOKUP(CHAR(255),$K$2:K$2))*60+
SUMIFS($G$3:$G$390,$A$3:$A$390,$I4,$C$3:$C$390,LOOKUP(CHAR(255),$K$2:K$2)),520),60)

หรือตามสูตรของคุณ Bo_ry ก็กระชับกว่าครับ แต่ต้องเปลี่ยนเลข 480 เป็น 520 และที่ M4 ควรเป็น
=MOD(MOD(SUMPRODUCT(MMULT($E$3:$G$390,{520;60;1}),($A$3:$A$390=$I4)*($C$3:$C$390=LOOKUP("ๆ",$K$2:K$2))),520),60)