“งานนี้ใช้เวลากี่วัน?”
“10 วันครับพี่”
“ดี!งั้นอีก 10 วันเอามาให้พี่ดู”
ผมรับคำแล้วถอยออกจากห้องพี่ปู ขณะเดินไปที่โต๊ะก็คิดในใจว่า
“เอ .. อีก 10 วันคือวันที่เท่าไรหว่า?”
ถ้าคิดง่ายๆ ก็นำวันไป +10
เช่น ถ้าวันนี้คือวันที่ 20 เมษายน 2020
อีก 10 วัน ก็คือวันที่ 30 เมษายน 2020

แต่… 10 วันที่ผมพูดคือวันทำงาน พี่ปูจะมารวมวันเสาร์-อาทิตย์ไม่ได้ !!
ถ้าอยากนับเฉพาะวันทำงาน ต้องใช้ฟังก์ชันช่วย
นั่นคือฟังก์ชันที่ชื่อว่า WORKDAY
(ขอบอกว่าฟังก์ชันนี้จำง่ายมากกกก เพราะชื่อสื่อแบบสุดๆ ^^)
มาลองใช้ฟังก์ชัน WORKDAY กับเคสนี้ หรือเขียนสูตรเป็น
=WORKDAY(B3,B4)

ง่ายสุดๆใช่ไหมครับ ^__^
แต่เดี๋ยวก่อน!
วันที่ 1 พฤษภาคม เป็นวันแรงงาน
วันที่ 4 พฤษภาคม เป็นวันฉัตรมงคล
แถมวันที่ 6 พฤษภาคม เป็นวันวิสาขบูชา
พี่ปูจะมานับวันหยุดไม่ได้ !! (จริงไหมพี่ ^^)
งั้นทำไงดี?
จริงๆแล้วเรายังใช้ศักยภาพของฟังก์ชัน WORKDAY ไม่หมด ถ้าเข้าใจศักยภาพของมันจะพบว่าเคสนี้ง่ายมาก
มาศึกษาฟังก์ชัน WORKDAY เพิ่มเติมกันนิดนึง
โครงสร้างของฟังก์ชัน WORKDAY คือ
WORKDAY( start_date, days, [holidays] )
start_date คือวันเริ่มต้น เช่น เคสนี้คือ 13 เมษายน 2020
days คือ จำนวนวันทำงาน เช่นเคสนี้คือ 10 วัน
[holidays] คือ วันหยุด มีกี่วันก็ได้
สังเกตว่า [holidays] มีวงเล็บก้ามปู ( […] ) ปิดหัว-ท้าย แปลว่าอาร์กิวเมนต์ (argument) นี้เป็นออปชัน นั่นคือใส่หรือไม่ใส่ก็ได้ ถ้าไม่ใส่แปลว่าให้รวมวันหยุดเข้าไปด้วย
ซึ่งเราไม่ยอม ^^
งั้นก็เตรียมลิตสต์วันหยุดไว้แบบนี้

เขียนสูตรได้เป็น
=WORKDAY(B3,B4,D4:D6)

ใช่เลย ใช่ไหมครับ ^__^
แล้วถ้าบริษัทหยุดเฉพาะวันอาทิตย์ล่ะ?
เราก็ทำเนียนไม่ต้องนับ
เอ๊ย ไม่ใช่! ต้องนับวันเสาร์เป็นวันทำงานด้วย (เมื่อกี๊ตั้มพิมพ์ครับพี่ปู ^^)
ฟังก์ชัน WORKDAY คำนวณโดยอาศัยสมมติฐานว่าหยุดวันเสาร์-อาทิตย์
แต่ถ้าวันหยุดไม่ใช่เสาร์-อาทิตย์ ต้องใช้ฟังก์ชัน “อัพเกรด” ที่ชื่อว่า WORKDAY.INTL
สิ่งที่ “อัพเกรด” มาจากฟังก์ชัน WORKDAY คือ WORKDAY.INTL คือระบุวันหยุดได้ทุกรูปแบบ โครงสร้างคือ
WORKDAY.INTL( start_date, days, [weekend], [holidays] )
จะพบว่าโครงสร้างคล้าย WORKDAY มาก
ต่างกันนิดเดียวตรงที่เพิ่ม [weekend] ขึ้นมา
[weekend] คือ รูปแบบวันหยุดสุดสัปดาห์
สังเกตว่า [weekend] มีวงเล็บก้ามปูครอบ
วงเล็บก้ามปูคืออะไร ? จำได้ไหมครับ
ใช่ครับ วงเล็บก้ามปูแปลว่าเป็นออปชัน นั่นคือใส่หรือไม่ใส่ก็ได้
ถ้าไม่ใส่ ค่าดีฟอลต์คือ หยุดวันเสาร์-อาทิตย์
ถ้าใส่ ใสได้ทั้งหมด 14 แบบ นั่นคือ

เคสนี้หยุดเฉพาะวันอาทิตย์ งั้นก็ระบุ [weekend] เป็น 11 หรือเขียนสูตรเป็น
=WORKDAY.INTL(B3,B4,11,D4:D6)

ฮัดช่า!
เจ๋งป่ะล๊า ^^
แล้วถ้าบริษัทหยุดวันอังคารกับวันพฤหัสล่ะ?
อย่าถามเยอะได้ไหม เดี๋ยวตอบไม่ได้ (เมื่อกี๊ตั้มพิมพ์ครับ ^^)
ความเจ๋งมากของ [weekend] คือระบุได้ 2 แบบ
แบบแรกคือ 1-7, 11-17 ที่ได้คุุยไปแล้ว
แบบที่สองคือ ใช้ตัวเลขเรียงกัน 7 ตัว
โดยตัวเลขที่ใช้มีเพียง 1 กับ 0
ความหมายของ 1 คือ วันหยุด
ความหมายของ 0 คือ วันทำงาน
การเรียงตัวเลขทั้ง 7 นั้น เรียงในรูปแบบจันทร์-อาทิตย์
ถ้าวันนั้นเป็นวันหยุด ให้ใส่ 1
ถ้าวันนั้นเป็นวันทำงาน ให้ใส่ 0
Excel มองว่าตัวเลขเรียงกัน 7 ตัวนี้เป็นตัวหนังสือ (Text) เวลาระบุต้องใส่เครื่องหมายคำพูด (Quotation Mark) ครอบหัว-ท้ายด้วย
เช่น
หยุดเสาร์-อาทิตย์ ใส่เป็น “0000011”
หยุดเฉพาะวันเสาร์ ใส่เป็น “0000010”
หยุดเฉพาะวันอาทิตย์ ใส่เป็น “0000001”
หยุดวันจันทร์กับวันพฤหัส ใส่เป็น “1001000”
เคสนี้หยุดวันอังคารกับวันพฤหัส งั้นก็ใส่เป็น “0101000”
หรือเขียนสูตรเป็น
=WORKDAY.INTL(B3,B4,“0101000”,D4:D6)

ป๊ะล่า !!
การใช้ [weekend] แบบนี้ ใช้กับฟังก์ชัน NETWOKRDAY.INTL ได้ด้วยนะครับ ^__^
(ใครไม่รู้จักฟังก์ชัน NETWORKDAY.INTL อ่านวิธีการใช้งานได้จาก บทความนี้ และวิธีการใช้งานแบบประยุกต์ได้จาก บทความนี้ )
โดยส่วนตัวแล้วผมชอบรูปแบบ [weekend] เป็นตัวเลขเรียงกัน 7 ตัวมาก เพราะ customized ได้ทุกรูปแบบ จะหยุดวันไหนอะไรยังไง ได้หมด
แต่แอบไม่ชอบนิดนึงตรงจำสลับกันนี่แหละ
ผมมักจำ 1 เป็นวันทำงาน และจำ 0 เป็นวันหยุด
ใครเป็นเหมือนผมบ้าง ยกมือขึ้น T_T
สำหรับใครที่สนใจไฟล์ตัวอย่างของบทความนี้ สามารถดาวน์โหลดเพื่อศึกษาเพิ่มเติมได้เลย
แล้วถ้าอีก 10 วัน กะจะลาป่วยพอดีล่ะ?
ชูวส์! อย่าเอ็ดไปสิ ^^
.
หากคุณชอบบทความแนวนี้ สามารถอัพเดตบทความใหม่โดยคลิก Like เฟซบุ๊กแฟนเพจ วิศวกรรีพอร์ต หรือคลิก ที่นี่
อย่าลืมแชร์ให้เพื่อนอ่านเพื่อเป็นกำลังใจให้คนเขียนด้วยนะครับ ^__^
อ้อ! ตอนนี้ผมมีคอร์สออนไลน์กับทาง SkillLane แล้ว ดูรายละเอียดได้จากลิงค์นี้ครับ https://www.skilllane.com/courses/excel-in-essence