ข้ามไปเนื้อหาหลัก
Wise Success (Thailand)
เทคนิค Excel

สูตรคำนวณอายุงานใน Excel ด้วย DATEDIF และสูตรวันที่สำหรับงาน HR

· อ่านประมาณ 10 นาที

งาน HR มีเรื่องที่ต้องคำนวณจากวันที่อยู่ตลอด ทั้งอายุงาน อายุพนักงาน วันครบทดลองงาน วันเกษียณ จำนวนวันทำงาน และสิทธิ์ต่าง ๆ ที่ขึ้นกับอายุงาน ถ้าคำนวณด้วยมือหรือใช้วันที่ลบกันหาร 365 ตัวเลขจะคลาดเคลื่อนได้ บทความนี้รวมสูตร Excel สำหรับงาน HR ที่ใช้บ่อย โดยมี DATEDIF เป็นพระเอก

เรื่องที่ต้องรู้ก่อน: วันที่ใน Excel และปี พ.ศ.

Excel เก็บวันที่เป็นตัวเลข (จำนวนวันนับจาก 1 ม.ค. 1900) จึงลบกันได้ แต่ปัญหาที่ HR ไทยเจอบ่อยคือพิมพ์ปีเป็น พ.ศ. เช่น 15/06/2560 ซึ่ง Excel จะเข้าใจว่าเป็นปี ค.ศ. 2560 ทำให้อายุงานผิดไป 543 ปี

  • แนะนำ: กรอกวันที่เป็น ค.ศ. แล้วตั้งรูปแบบเซลล์ให้แสดงเป็น พ.ศ. ด้วย Format Cells > Custom ใส่ d/m/bbbb (bbbb คือปีพุทธศักราช)
  • ถ้าข้อมูลเดิมถูกกรอกเป็น พ.ศ. ไปแล้วและ Excel รับเป็นวันที่ ใช้สูตรแปลงในคอลัมน์ช่วย =DATE(YEAR(A2)-543, MONTH(A2), DAY(A2))
  • ตรวจว่าเซลล์เป็นวันที่จริงด้วย =ISNUMBER(A2) ถ้าได้ FALSE แสดงว่าเป็นข้อความ ต้องแปลงก่อน

DATEDIF คืออะไร

=DATEDIF(start_date, end_date, unit)

DATEDIF คำนวณระยะห่างระหว่าง 2 วันที่ในหน่วยที่ต้องการ เป็นสูตรที่ไม่ขึ้นในรายการแนะนำของ Excel (ไม่มีคำใบ้ขณะพิมพ์) แต่ใช้ได้ทุกเวอร์ชัน

unitผลลัพธ์
"y"จำนวนปีเต็ม
"m"จำนวนเดือนเต็ม
"d"จำนวนวัน
"ym"เดือนที่เหลือหลังหักปีเต็ม
"yd"วันที่เหลือหลังหักปีเต็ม
"md"วันที่เหลือหลังหักเดือนเต็ม (Microsoft แจ้งว่าอาจให้ผลผิดในบางกรณี)

ข้อควรระวัง: start_date ต้องน้อยกว่า end_date เสมอ ถ้ากลับกันจะได้ #NUM!

สูตรคำนวณอายุงาน

สมมติ B2 คือวันเริ่มงาน

อายุงานเป็นปีเต็ม

=DATEDIF(B2, TODAY(), "y")

อายุงานแบบ "ปี เดือน"

=DATEDIF(B2, TODAY(), "y") & " ปี " & DATEDIF(B2, TODAY(), "ym") & " เดือน"

อายุงานแบบ "ปี เดือน วัน"

=DATEDIF(B2, TODAY(), "y") & " ปี " & DATEDIF(B2, TODAY(), "ym") & " เดือน " & DATEDIF(B2, TODAY(), "md") & " วัน"

ถ้าต้องการคำนวณ ณ วันที่ตัดรอบ (เช่น สิ้นปี) แทนวันนี้ ให้ใส่วันตัดรอบไว้ในเซลล์ เช่น $H$1 แล้วใช้แทน TODAY() ทุกจุด ตัวเลขจะไม่เปลี่ยนทุกครั้งที่เปิดไฟล์

อายุงานเป็นปีทศนิยม

=ROUND(YEARFRAC(B2, TODAY(), 1), 2)

ได้ผลเช่น 5.27 ปี เหมาะกับการคำนวณที่ต้องการสัดส่วน เช่น โบนัสตามอายุงาน

สูตรคำนวณอายุพนักงาน

=DATEDIF(C2, TODAY(), "y")

C2 คือวันเกิด ใช้ทำรายงานกำลังคนแยกตามช่วงอายุ หรือนำไปจัดกลุ่มใน Pivot Table ทีละ 10 ปี

สูตรวันครบทดลองงาน วันเกษียณ และวันครบรอบ

ต้องการสูตร
ครบทดลองงาน 119 วัน (นับวันเริ่มงานเป็นวันที่ 1)=B2+118
ครบทดลองงาน 3 เดือน=EDATE(B2, 3)-1
วันเกษียณ อายุ 60 ปี=EDATE(C2, 60*12)
เกษียณสิ้นเดือนที่ครบ 60 ปี=EOMONTH(C2, 60*12)
เกษียณสิ้นปีงบประมาณ (30 ก.ย.) ที่ครบ 60 ปี=DATE(YEAR(C2)+60+(MONTH(C2)>9), 9, 30)
ครบรอบวันเริ่มงานปีนี้=DATE(YEAR(TODAY()), MONTH(B2), DAY(B2))

กฎการนับวันทดลองงานและอายุเกษียณขึ้นกับนโยบายของแต่ละบริษัท ปรับตัวเลขในสูตรให้ตรงกับระเบียบของคุณ

นับจำนวนวันทำงาน ไม่รวมวันหยุด

=NETWORKDAYS(B2, C2, วันหยุด!$A$2:$A$20)

นับวันทำงานจันทร์–ศุกร์ระหว่าง B2 ถึง C2 และหักวันหยุดนักขัตฤกษ์ที่ใส่ไว้ในชีต "วันหยุด" ใช้คำนวณวันทำงานของพนักงานเข้าใหม่ระหว่างเดือน หรือจำนวนวันลา

ถ้าบริษัททำงานวันเสาร์ด้วย (หยุดเฉพาะวันอาทิตย์) ใช้ NETWORKDAYS.INTL แล้วกำหนดวันหยุดเป็นรหัส 11

=NETWORKDAYS.INTL(B2, C2, 11, วันหยุด!$A$2:$A$20)

หรือใช้ข้อความ 7 หลักแทนวันจันทร์–อาทิตย์ (1 = หยุด, 0 = ทำงาน) เช่น "0000011" คือหยุดเสาร์–อาทิตย์

ใช้อายุงานคำนวณสิทธิ์ต่าง ๆ

วันลาพักร้อนตามอายุงาน

ทำตารางสิทธิ์แยกไว้ในชีต "สิทธิ์ลา" แล้วดึงด้วย XLOOKUP แบบหาค่าที่น้อยกว่าถัดไป

A: อายุงานขั้นต่ำ (ปี)B: วันลาพักร้อน
16
38
510
1012
=XLOOKUP(D2, สิทธิ์ลา!$A$2:$A$5, สิทธิ์ลา!$B$2:$B$5, 0, -1)

D2 คืออายุงานเป็นปีเต็ม คนที่ทำงานไม่ถึง 1 ปีจะได้ 0 จากช่อง if_not_found ตัวเลขในตารางเป็นตัวอย่าง ให้ใส่ตามระเบียบบริษัท

ตัวอย่าง: อัตราค่าชดเชยตามอายุงาน

ใช้หลักเดียวกันกับตารางค่าชดเชยตามกฎหมายคุ้มครองแรงงาน โดยคำนวณอายุงานเป็นจำนวนวัน (=DATEDIF(B2, วันสิ้นสุด, "d")) แล้วเทียบกับตารางขั้นอายุงาน เช่น ครบ 120 วัน = 30 วัน, ครบ 1 ปี = 90 วัน, ครบ 3 ปี = 180 วัน, ครบ 6 ปี = 240 วัน, ครบ 10 ปี = 300 วัน และครบ 20 ปี = 400 วัน ควรตรวจสอบอัตราล่าสุดกับกฎหมายหรือฝ่ายกฎหมายก่อนใช้จริงทุกครั้ง

ปัญหาที่พบบ่อย

  • #NUM! วันเริ่มมากกว่าวันสิ้นสุด มักเกิดกับพนักงานที่ยังไม่เริ่มงาน ครอบด้วย =IF(B2>TODAY(), "ยังไม่เริ่มงาน", DATEDIF(B2, TODAY(), "y"))
  • #VALUE! วันที่เป็นข้อความ เช่น นำเข้าจากระบบมาเป็น "15.06.2017" ใช้ Data > Text to Columns เลือกรูปแบบวันที่ DMY เพื่อแปลง
  • อายุงานเกิน 500 ปี วันที่ถูกกรอกเป็นปี พ.ศ. ใช้สูตรแปลงด้านบน
  • ผลลัพธ์แสดงเป็นวันที่แปลก ๆ เซลล์ผลลัพธ์ถูกจัดรูปแบบเป็น Date ให้เปลี่ยนเป็น General

สรุป

DATEDIF ร่วมกับ TODAY, EDATE, EOMONTH, NETWORKDAYS และ XLOOKUP ครอบคลุมงานคำนวณวันที่ของ HR เกือบทั้งหมด สิ่งสำคัญที่สุดคือกรอกวันที่ให้ Excel รู้จักเป็นวันที่จริง และแยกตารางสิทธิ์ออกจากสูตร เพื่อให้แก้นโยบายได้ในที่เดียว

ถ้าทีม HR ต้องการเรียนสูตรเหล่านี้กับข้อมูลพนักงาน วันลา และรายงานกำลังคนแบบที่ใช้จริง ดูหลักสูตรอบรม Excel HR หรืออ่าน20 สูตร Excel พื้นฐานเพื่อทบทวนก่อน สำหรับองค์กรที่ต้องการให้วิทยากรสอน Excel ให้ฝ่ายบุคคลทั้งทีม ดูรายละเอียดอบรม In-house

บทความที่เกี่ยวข้อง

เทคนิค Excel ·

Power Query คืออะไร? รวมไฟล์ Excel หลายไฟล์อัตโนมัติ ไม่ต้องคัดลอกวาง

Power Query คือเครื่องมือใน Excel ที่รวมและล้างข้อมูลจากหลายไฟล์ได้อัตโนมัติ ตั้งขั้นตอนครั้งเดียว เดือนถัดไปแค่กด Refresh บทความนี้สอนทีละขั้นพร้อมเทคนิคที่ใช้บ่อย

อ่านต่อ →

เทคนิค Excel ·

วิธีทำ Dropdown List ใน Excel ด้วย Data Validation (รวม Dropdown 2 ชั้น)

Dropdown List ช่วยให้ข้อมูลใน Excel สะอาดตั้งแต่ต้นทาง บทความนี้สอนทำ Dropdown 3 แบบ รวมถึง Dropdown 2 ชั้น และใช้ Data Validation ป้องกันการกรอกข้อมูลผิด

อ่านต่อ →

เทคนิค Excel ·

สูตร IF หลายเงื่อนไขใน Excel: IF ซ้อน, IFS, AND, OR พร้อมตัวอย่าง

สอนใช้สูตร IF หลายเงื่อนไขใน Excel ตั้งแต่ IF พื้นฐาน AND, OR, IF ซ้อน ไปจนถึง IFS และ SWITCH พร้อมตัวอย่างงานจริงและวิธีเขียนสูตรให้สั้น แก้ไขง่าย

อ่านต่อ →

ต้องการจัดอบรมให้ทีมในองค์กร?

ปรับเนื้อหาให้ตรงกับงานจริงของทีมคุณ สอนที่บริษัทหรือ Online ได้ ส่งรายละเอียดมา เราตอบกลับพร้อมใบเสนอราคา

☎ โทรเลย LINE @wisesuccess

เลือกประเภทคุกกี้ที่คุณอนุญาต ปรับเปลี่ยนได้ทุกเมื่อที่ลิงก์ "ตั้งค่าคุกกี้" ท้ายเว็บไซต์