
ในส่วนของ Small เป็นการใช้งานแบบ Array ครับ ก่อนจะไปเข้าใจ Array ให้เข้าใจ Small แบบปกติก่อนครับ
ไวยากรณ์คือ
=Small(ช่วงข้อมูลที่เป็นตัวเลข, ค่าลำดับ)
ยกตัวอย่างสมมุติข้อมูลเป็นตามด้านล่าง
A B
1. 5
2. 8
3. 6
4. 2
5. 4
หากที่ B1 เขียนสูตรว่า
=Small(A1:A5,
3)
หมายถึงว่า ให้หาค่าที่น้อยที่สุดเป็นลำดับที่
3 ของช่วงข้อมูล A1:A5 คำตอบจะได้ 5
โดยค่าที่น้อยที่สุดแต่ละลำดับจะเป็นดังนี้
ค่าที่น้อยที่สุดเป็นลำดับที่ 1 คือ 2
ค่าที่น้อยที่สุดเป็นลำดับที่ 2 คือ 4
ค่าที่น้อยที่สุดเป็นลำดับที่
3 คือ 5
...
ทีนี้ก็มายังสูตรที่ถามมาครับ
จาก SMALL(IF($K$4:$K$33>=70,ROW($K$4:$K$33)-ROW($K$4)+1),$H36))
เมื่อแทนค่าตามไวยากรณ์
1. ช่วงข้อมูลที่เป็นตัวเลขคือ IF($K$4:$K$33>=70,ROW($K$4:$K$33)-ROW($K$4)+1)
2. ค่าลำดับคือ $H36
ทีนี้มาแกะสูตร If แบบ Array กันครับ จากด้านบนเป็นสูตรที่ครอบคลุมช่วงข้อมูลปริมาณเยอะ จะอธิบายให้เห็นภาพได้ยาก
จะยกตัวอย่างเล็ก ๆ ตามด้านล่างครับ
K L
1. 65
2. 83
3. 40
4. 75
5. 90
หากที่ L1 คีย์เป็น
=IF($K$1:$K$5>=70,ROW($K$1:$K$5)-ROW($K$1)+1)
Ctrl+Shift+Enter
หมายความว่า หาก $K$1:$K$5 มากกว่าหรือเท่ากับ 70 ให้แสดงค่าลำดับ หากไม่ใช่ให้แสดง False
มาแกะสูตรด้วยการ
กดแป้น F9 กันทีละขั้นครับ
1. ลากเมาส์คลุม $K$1:$K$5 แล้วกดแป้น F9 จะได้ =IF({65;83;40;75;90}>=70,ROW($K$1:$K$5)-ROW($K$1)+1)
2. ลากเมาส์คลุม {65;83;40;75;90}>=70 แล้วกดแป้น F9 จะได้ =IF({FALSE;TRUE;FALSE;TRUE;TRUE},ROW($K$1:$K$5)-ROW($K$1)+1)
3. ลากเมาส์คลุม ROW($K$1:$K$5) แล้วกดแป้น F9 จะได้ =IF({FALSE;TRUE;FALSE;TRUE;TRUE},{1;2;3;4;5}-ROW($K$1)+1)
4. ลากเมาส์คลุม ROW($K$1) แล้วกดแป้น F9 จะได้ =IF({FALSE;TRUE;FALSE;TRUE;TRUE},{1;2;3;4;5}-{1}+1)
5. ลากเมาส์คลุม {1;2;3;4;5}-{1} แล้วกดแป้น F9 จะได้ =IF({FALSE;TRUE;FALSE;TRUE;TRUE},{0;1;2;3;4}+1)
6. ลากเมาส์คลุม {1;2;3;4;5}-{1}+1 แล้วกดแป้น F9 จะได้ =IF({FALSE;TRUE;FALSE;TRUE;TRUE},{1;2;3;4;5})
7. ลากเมาส์คลุม =IF({FALSE;TRUE;FALSE;TRUE;TRUE},{1;2;3;4;5}) แล้วกดแป้น F9 จะได้ ={FALSE;2;FALSE;4;5}
มาถึงขั้นนี้ให้สังเกตว่า
หากค่าด้านหน้าเป็น True จะนำค่าด้านหลังมาแสดง หากเป็น False ก็จะแสดงค่า False
เมื่อสูตร If อยู่ใน Small อีกที และ
สมมุติต่อว่าเราต้องการหาค่าที่น้อยที่สุดเป็นลำดับ
3 จากผลลัพธ์ที่ได้จาก IF จะได้เป็น
=Small({FALSE;2;FALSE;4;5},3)
คำตอบคือ 5 เนื่องจากเป็นค่าที่น้อยที่สุดเป็นลำดับ
3
ตอนนี้เราก็แกะสูตรมาถึง Small แล้ว สมมุติต่อว่าเรานำผลลัพธ์ของ Small มาใช้ใน Index ซึ่งต้องการให้แสดงข้อมูลใน J1:J5 ด้านล่าง ด้วยผลลัพธ์ของ Small ด้านบน
...J K L
1. A 65
2. B 83
3. C 40
4. D 75
5. E 90
ที่ L2 สามารถเขียนสูตร Index โดยมีผลจาการแกะสูตร Small เป็นส่วนประกอบจะมีลักษณะตามด้านล่าง
=Index(J1:J5,Small({FALSE;2;FALSE;4;5},3))
และเมื่อ Small({FALSE;2;FALSE;4;5},3) ผลลัพธ์คือ 5 สูตรก็จะกลายเป็น
=Index(J1:J5,5)
นั่นคือให้นำลำดับที่ 5 ของ J1:J5 มาแสดง คำตอบที่ได้คือ E
Note: การบวกด้วย 1 เพื่อให้ค่าลำดับเริ่มที่เลข 1 เสมอ