สิ่งนี้ควรใช้งานได้ในวันใดก็ได้ของปีใดก็ได้ใน Excel เวอร์ชันใดก็ได้จนถึงปี 2078 (นานกว่านั้นมากใน Excel 2007 หรือใหม่กว่า)
=SUM(IF(DAY(ROW(OFFSET($A$1,TODAY(),0,DATE(YEAR(TODAY()),12,31)-TODAY()+1)))={1,16},1,0))
หมายเหตุ ฉันกำลังตรวจสอบวัน = 1 หรือ 16 โดยชดเชย 1 วัน (แนวคิดคือการหลีกเลี่ยงค่า DAY()
สิ้นเดือนที่แตกต่างกัน)
{สูตรอาร์เรย์... กด Ctrl+Shift+Enter
เพื่อคอมมิต}
[ภาคผนวก]
หากคุณไม่ต้องการรวมวันปัจจุบัน (เช่น วันนี้คือ 15 สิงหาคม) ให้ใช้สิ่งนี้แทน:
=SUM(IF(DAY(ROW(OFFSET($A$1,TODAY()+1,0,DATE(YEAR(TODAY()),12,31)-TODAY()+1)))={1,16},1,0))
ปล. ฉันทดสอบทุกวันตั้งแต่วันนี้จนถึงวันอธิกสุรทินปี 2016 และหลังจากนั้น และมันก็ได้ผลดี ทั้งหมดนี้เป็นเพียงการทดสอบหมายเลขแถวที่ถือเป็นอนุกรมวันที่โดยฟังก์ชัน DAY()
เพื่อดูว่าเป็น 1 หรือ 16 แต่อนุกรมถูกชดเชยด้วย +1 ดังนั้นจึงตรวจสอบจริงๆ เพื่อดูว่า DAY()
เป็น [วันสุดท้ายของเดือนใดก็ตาม] หรือ 15. หากผลลัพธ์เป็นจริง ให้บวก 1 มิฉะนั้นให้บวก 0
[เพิ่มเติมเพิ่มเติม]
ต่อไปนี้เป็นเวอร์ชัน ไม่ใช่อาร์เรย์ ที่ทำงานในลักษณะเดียวกัน:
รวมถึงวันปัจจุบัน:
=SUMPRODUCT(N(DAY(ROW(OFFSET($A$1,TODAY(),0,DATE(YEAR(TODAY()),12,31)-TODAY()+1)))={1,16}))
ไม่รวมวันปัจจุบัน
=SUMPRODUCT(N(DAY(ROW(OFFSET($A$1,TODAY(),0,DATE(YEAR(TODAY()),12,31)-TODAY()+1)))={1,16}))
person
andy holaday
schedule
08.08.2012