
สูตรนี้แม้จะไม่ยาวมากแต่ซับซ้อนพอสมควรครับ จากข้อความทั้งหมด
joo wrote:มีคำถามมารบกวนอีกแล้วครับคือว่าถ้าเราคีย์ข้อมูลตามนี้ครับ
A1 พิมพ์ 20/05/2553
A2 พิมพ์ 24/05/2553
ที่ A3 ต้องการให้นับวันโดยไม่รวมเสาร์อาทิตย์ ค่าที่ได้ก็จะได้ 3 วัน แบบนี้ทำได้ไหมครับ
snasui wrote:สมมุติว่า A1 คือ 20/5/2010, A2 คือ 24/5/2010
ที่เซลล์ใด ๆ คีย์
=SUMPRODUCT(--(WEEKDAY(ROW(INDIRECT(A1&":"&A2)),2)<6))
Enter
จะเห็นว่าต้องมีวันเวลาเริ่มกับสิ้นสุดขึ้นมาก่อน เริ่มคือ A1, สิ้นสุดคือ A2
จากสูตร เป็นการแจกแจงค่า Serial Number ของช่วงวันที่ เริ่มจากค่าในเซลล์ A1 และไปสิ้นสุดตามค่าในเซลล์ A2
เมื่อคลุม ROW(INDIRECT(A1&":"&A2)) แล้วกดแป้น F9 เพื่อดูผลลัพธ์ของสูตรจะได้เป็น
=SUMPRODUCT(--(WEEKDAY({40318;40319;40320;40321;40322},2)<6))
และเมื่อคลุม WEEKDAY({40318;40319;40320;40321;40322},2) แล้วกดแป้น F9 เพื่อดูผลลัพธ์ของสูตร จะได้เป็น
=SUMPRODUCT(--({4;5;6;7;1}<6))
เป็นการเปรียบเทียบว่าผลลัพธ์จาก Weekday นั้นน้อยกว่าค่าลำดับของวันเสาร์ใช่หรือไม่
Function Weekday จะเป็นการหา
ค่าลำดับของวันใน 1 สัปดาห์ว่าแต่ละวันอยู่ลำดับที่เท่าไร
Weekday(Range,1) หมายถึงให้วันลำดับที่ 1 เป็นวันอาทิตย์
Weekday(Range,
2) หมายถึงให้วันลำดับที่ 1 เป็นวันจันทร์ ดังนั้นลำดับที่ 6 และ 7 คือวันเสาร์และอาทิตย์ตามลำดับ
เมื่อคลุม ({4;5;6;7;1}<6) แล้วกดแป้น F9 เพื่อดูผลลัพธ์ของสูตรจะได้เป็น
=SUMPRODUCT(--{TRUE;TRUE;FALSE;FALSE;TRUE})
เมื่อคลุม --{TRUE;TRUE;FALSE;FALSE;TRUE} แล้วกดแป้น F9 เพื่อดูผลลัพธ์ของสูตรจะได้เป็น
=SUMPRODUCT({1;1;0;0;1})
จะเห็นว่าเครื่องหมาย -- เป็นการแปลง True ให้เป็น 1 และแปลง False ให้เป็น 0 ซึ่งคำตอบของสูตรคือ 3 เป็นผลรวมของเลข 1 จำนวน 3 ตัว