:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

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

ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
duean1983
Member
Member
Posts: 76
Joined: Sun Nov 12, 2017 9:56 pm

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

#1

Post 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
You do not have the required permissions to view the files attached to this post.
User avatar
DhitiBank
Gold
Gold
Posts: 1676
Joined: Mon Oct 15, 2012 12:07 am

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

#2

Post 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 ตามลำดับ

จากนั้นคัดลอกสูตรทั้งหมดลงล่างครับ
duean1983
Member
Member
Posts: 76
Joined: Sun Nov 12, 2017 9:56 pm

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

#3

Post by duean1983 »

ได้แล้วค่ะ ขอบคุณมากค่ะ
duean1983
Member
Member
Posts: 76
Joined: Sun Nov 12, 2017 9:56 pm

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

#4

Post 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
You do not have the required permissions to view the files attached to this post.
User avatar
Bo_ry
Gold
Gold
Posts: 1244
Joined: Sun Aug 12, 2018 12:11 am
Excel Ver: MS 365
Contact:

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

#5

Post 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
You do not have the required permissions to view the files attached to this post.
User avatar
DhitiBank
Gold
Gold
Posts: 1676
Joined: Mon Oct 15, 2012 12:07 am

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

#6

Post 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)
Post Reply