ง่ายงี้เลย! สูตร Excel นับเฉพาะเสาร์-อาทิตย์ ep2 [Count Only Weekend]

“อยากนับเฉพาะวันเสาร์-อาทิตย์ ต้องเขียนสูตรยังไงครับ?” 
“เอ .. เหมือนคุ้นๆว่าพี่เคยสอนไปแล้วนะ”
“ใช่ๆ พอพี่พูด ผมนึกออกเลย”
โจ้ตอบแล้วเปิดคอมพ์หาไฟล์เก่าทันที

“เจอแล้ว สูตรนี้ไง” โจ้ตะโกนเสียงดังแปดหลอด

=SUMPRODUCT(- -(WEEKDAY(ROW(INDIRECT(B1&”:”&B2)))={1,7}))

(อ่านรายละเอียดและที่มาของสูตรได้จากบทความ ep1 หรือ บทความนี้)

“มีอะไรกันหรือคะ เสียงดังเชียว” น้องโบพูดยิ้มๆพลางเข้ามาร่วมวง
“คุยกันเรื่องสูตรนับวันเสาร์-อาทิตย์น่ะ แต่สูตรนี้พี่ว่าเข้าใจยากนิดนึง โบมีไอเดียอื่นไหม?” ผมโยนหินถามทาง
“มีค่ะ”
“หยึย! เพิ่งถามเอง ทำไมคิดเร็วจัง”
“ใช้สูตรนี้ค่ะ”
แล้วน้องโบก็เขียนสูตร

=NETWORKDAYS.INTL( B3, B4, “1111100” )

“เฮ้ยยยย!!” คราวนี้ผมตะโกนเสียงดังเก้าหลอด

ทำไมต้องใช้ NETWORKDAY.INTL ?
จริงๆแล้วฟังก์ชัน NETWORKDAY.INTL ใช้นับวันทำงาน (ไม่ใช่วันเสาร์-อาทิตย์)
มาทบทวนกันนิดนึง โครงสร้างคือ

NETWORKDAYS.INTL( start_date, end_date, [weekend], [holidays] )

(สำหรับใครที่ยังไม่รู้จักฟังก์ชัน NETWORKDAY.INTL อ่านรายละเอียดและวิธีใช้งานได้จาก บทความนี้)

ใช้นับวันทำงาน แล้วจะนับเสาร์-อาทิตย์ได้ยังไง?
ถ้าใช้แบบปกติจะนับไม่ได้ แต่ถ้าใช้แบบ “ไม่ปกติ” จะนับได้ ^__^

ยังไง?
[weekend] หรือ รูปแบบวันหยุดสุดสัปดาห์ ระบุได้ 2 แบบ

แบบแรกคือ ระบุเป็นตัวเลข 1-7, 11-17 นั่นคือ

( [weekend] มีวงเล็บก้ามปูปิดหัวท้าย ความหมายของวงเล็บก้ามปูคือเป็นออปชัน จะใส่หรือไม่ใส่ก็ได้ ถ้าไม่ใส่โปรแกรมจะระบุเป็นค่าดีฟอลต์ ซึ่งเคสนี้คือ 1 )

แบบที่สองคือ ใช้ตัวเลขเรียงกัน 7 ตัว
ตัวเลขที่ใช้คือ 1 กับ 0
เรียง 1 กับ 0 ในรูปแบบจันทร์-อาทิตย์
ถ้าวันนั้นเป็นวันหยุด ใส่ 1
ถ้าวันนั้นเป็นวันทำงาน ใส่ 0

Excel มองว่าตัวเลขเรียงกัน 7 ตัวนี้เป็นตัวหนังสือ (Text) เวลาระบุต้องใส่เครื่องหมายคำพูด (Quotation Mark) ครอบหัว-ท้ายด้วย
เช่น
หยุดเสาร์-อาทิตย์ ใส่เป็น “0000011”
หยุดเฉพาะวันเสาร์ ใส่เป็น “0000010”
หยุดเฉพาะวันอาทิตย์ ใส่เป็น “0000001”
หยุดวันจันทร์กับวันพฤหัส ใส่เป็น “1001000”

ถ้านับวันทำงานแบบหยุดเสาร์-อาทิตย์ ก็เขียนสูตรได้เป็น

=NETWORKDAYS.INTL( B3, B4, “0000011” )

แล้วจะนับเฉพาะวันเสาร์-อาทิตย์ ได้ยังไง?
คำถามดีมาก ความเจ๋งมันอยู่ตรงนี้ครับ ^__^

NETWORKDAYS.INTL นั้นนับเฉพาะวันทำงานที่ระบุใน [weekend]
1 คือ วันหยุด
0 คือ วันทำงาน

อาจตีความหมายในอีกมุมนึงได้เป็น
1 คือ วันที่ไม่นับ
0 คือ วันที่นับ

แปลว่า NETWORKDAYS.INTL นับเฉพาะวันที่ระบุเป็น 0 ถูกต้องไหมครับ

ดังนั้นถ้าต้องการนับเฉพาะวันเสาร์-อาทิตย์ ก็ระบุ [weekend] เป็น “1111100”
หรือเขียนสูตรเป็น

=NETWORKDAYS.INTL( B3, B4, “1111100” )

บ๊ะ!!

ผมขอเรียกสูตรแบบนี้ว่าเป็นการใช้ “ผลข้างเคียง” ของฟังก์ชัน ^__^

แล้วถ้าต้องการนับเฉพาะวันเสาร์ล่ะ?
ง่ายมาก ก็เปลี่ยน [weekend] เป็น “1111101”
หรือเขียนสูตรเป็น

=NETWORKDAYS.INTL( B3, B4, “1111101” )

แล้วถ้าต้องการนับเฉพาะวันอาทิตย์ล่ะ?
หลักการเดียวกันเลย เปลี่ยน [weekend] เป็น “1111110”
หรือเขียนสูตรเป็น

=NETWORKDAYS.INTL( B3, B4, “1111110” )

เจ๋งใช่ไหมล่ะ ^__^

จากเดิมผมต้องใช้สูตร
=SUMPRODUCT(–(WEEKDAY(ROW(INDIRECT(B3&”:”&B4)))=1))
ซึ่งเข้าใจยาก

แต่พอใช้ NETWORKDAYS.INTL กลับเหลือแค่
=NETWORKDAYS.INTL(B3,B4,”1111110″)

ไม่ร้อง เฮ้ย ก็ต้องร้องว่า
“แม่เจ้า!”
“สะเด่า!”
“อีโหยงโก้ง!”

แล้วคุณล่ะครับ เห็นสูตรนี้แล้วร้องว่าอะไร ^^

คนคิดเทคนิค “ผลข้างเคียง” นี้คือคุณ Bo Rydobon เจ้าของเพจ Excel Wizard นั่นเอง เค้าเคยแชร์สูตรตอนอ่านบทความ ep1 ที่ผมเขียน ผมเห็นสูตรเค้าแล้วชอบมากก็เลยเขียนเป็น ep2 ซะเลย
ขอบคุณ “น้องโบ” ที่แชร์เทคนิคดีๆครับ ^/\^

สำหรับใครที่สนใจไฟล์ตัวอย่างของบทความนี้ สามารถดาวน์โหลดเพื่อศึกษาเพิ่มเติมได้เลยครับ

.
หากคุณชอบบทความแนวนี้ สามารถอัพเดตบทความใหม่โดยคลิก Like เฟซบุ๊กแฟนเพจ วิศวกรรีพอร์ต หรือคลิก ที่นี่
อย่าลืมแชร์ให้เพื่อนอ่านเพื่อเป็นกำลังใจให้คนเขียนด้วยนะครับ ^__^

อ้อ! ตอนนี้ผมมีสอนคอร์สออนไลน์ ชื่อ “Excel In Essence: รู้ Excel เท่านี้ ชีวิตดีขึ้นมากมาย” สนใจดูรายละเอียดได้จาก ลิงค์นี้ ครับ

วิศวกรรีพอร์ต

คนธรรมดาผู้มีประสบการณ์ทำงานหลากหลายตำแหน่ง คลุกคลีกับการทำรีพอร์ตมาโดยตลอด สุดท้ายค้นพบแนวทางของตัวเอง จึงอยากแบ่งปันเคล็ดลับและประสบการณ์ให้กับผู้สนใจ

One thought on “ง่ายงี้เลย! สูตร Excel นับเฉพาะเสาร์-อาทิตย์ ep2 [Count Only Weekend]

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.