
เป็นการรวมยอดตามเงื่อนไขครับ สูตรนี้เป็นสูตรซับซ้อน ทำความเข้าใจยากมาก ผมอธิบายหลัก ๆ ว่าสูตรทำงานอย่างไร ส่วนสูตรย่อย ๆ ขอให้ทำความเข้าใจตาม Link ด้านท้ายครับ
จากสูตร =SUM(IF(
MATCH(IF(SUBTOTAL(3,OFFSET(E10,ROW(E10:E31)-ROW(E10),0)),E10:E31),IF(SUBTOTAL(3,OFFSET(E10,ROW(E10:E31)-ROW(E10),0)),E10:E31),0)=ROW(E10:E31)-ROW(E10)+1,
SUBTOTAL(3,OFFSET(E10,ROW(E10:E31)-ROW(E10),0))))
เป็นการรวมยอดตามเงื่อนไข ถ้า
MATCH(IF(SUBTOTAL(3,OFFSET(E10,ROW(E10:E31)-ROW(E10),0)),E10:E31),IF(SUBTOTAL(3,OFFSET(E10,ROW(E10:E31)-ROW(E10),0)),E10:E31),0)=ROW(E10:E31)-ROW(E10)+1 เป็นจริงแล้ว ให้นำผลลัพธ์ที่ได้จากสูตร
SUBTOTAL(3,OFFSET(E10,ROW(E10:E31)-ROW(E10),0)) มาแสดง ถ้าไม่เป็นจริงก็ให้แสดงค่า False
จากสูตร MATCH(
IF(SUBTOTAL(3,OFFSET(E10,ROW(E10:E31)-ROW(E10),0)),E10:E31),
IF(SUBTOTAL(3,OFFSET(E10,ROW(E10:E31)-ROW(E10),0)),E10:E31),0) หมายถึงเป็นการหาว่าผลลัพธ์จากสูตร
IF(SUBTOTAL(3,OFFSET(E10,ROW(E10:E31)-ROW(E10),0)),E10:E31) อยู่ในลำดับที่เท่าไรของผลลัพธ์จากสูตร
IF(SUBTOTAL(3,OFFSET(E10,ROW(E10:E31)-ROW(E10),0)),E10:E31)
จากสูตร IF(
SUBTOTAL(3,OFFSET(E10,ROW(E10:E31)-ROW(E10),0)),
E10:E31) หมายถึง ถ้าผลลัพธ์จากสูตร
SUBTOTAL(3,OFFSET(E10,ROW(E10:E31)-ROW(E10),0)) เป็นจริง (ไม่เป็น 0) ให้แสดงค่าในช่วงเซลล์
E10:E31 หากไม่เป็นจริงให้แสดงค่า False
ฟังก์ชั่น Offset ศึกษาได้จากที่นี่
http://snasui.blogspot.com/2009/03/offset.html
ฟังก์ชั่น Subtotal ศึกษาได้จากที่นี่
http://office.microsoft.com/th-th/excel ... aspx?CTT=1
การคำนวณของสูตร ROW(E10:E31)-ROW(E10)+1 ศึกษาได้จากที่นี่
viewtopic.php?p=17983#p17983