
เพื่อสะดวกในการทำความเข้าใจทุกสูตรของ Excel ให้ใช้หลักการนี้เสมอไปครับคือ
- ปรับข้อมูลให้เหลือเพียงไม่กี่บรรทัดและให้เหลือข้อมูลที่เข้าเงื่อนไข
- ใช้เครื่องมือเช่น F9, Evaluate Formula, Function Argument เข้ามาช่วย
- การแปลสูตรให้ง่ายต่อการทำความเข้าใจ จะแปลจากสูตรที่ครอบอยู่ด้านนอกไปยังสูตรที่อยู่ด้านใน
ยกตัวอย่างสูตรเดิมผมปรับให้เหลือ 3 บรรทัด และจากสูตรในรูป ได้เปลี่ยนเครื่องหมาย / มาเป็นเครื่องหมาย * เพื่อจะได้สะดวกแก่การทำความเข้าใจเมื่อตอนแปลสูตรด้วย F9 นั่นคือ
Desc.png
=INDEX('Trd2'!D$2:D$4,AGGREGATE(15,6,(ROW('Trd2'!$A$2:$A$4)-ROW('Trd2'!$A$2)+1)/(('Trd2'!$A$2:$A$4<>"")
*('Trd2'!$A$2:$A$4='Trd2'!$A$3:$A$5)),1))
การแปลที่สะดวกต่อการทำความเข้าใจคือให้แปลจากสูตรนอกสุดไปด้านใน
ฟังก์ชั่นนอกสุดคือ Index ไวยากรณ์คือ
=index(array,row_num)
แปลว่า จากช่วง array ให้นำลำดับที่ row_num มาแสดง
เทียบสูตรกับไวยากรณ์ด้านบนจะได้เป็น
array คือ 'Trd2'!D$2:D$4
row_num คือ AGGREGATE(15,6,(ROW('Trd2'!$A$2:$A$4)-ROW('Trd2'!$A$2)+1)/(('Trd2'!$A$2:$A$4<>"")*('Trd2'!$A$2:$A$4='Trd2'!$A$3:$A$5)),1)
จาก row_num ของ Index ใช้ฟังก์ชั่น Aggregate เข้ามาช่วย ไวยากรณ์ของ Aggregate ที่นำมาใช้คือ
=aggregate(function_num,options,array,k)
แปลว่า ให้หาผลลัพธ์ของ array ตาม function_num, options และ k ขึ้นอยู่กับว่าทั้งสามส่วนประกอบนี้เป็นอะไร ที่นำมาใช้ในสูตรนี้คือ 15, 6 และ 1 ตามลำดับ โดย
15 และ 1 หมายถึงให้หาค่าที่น้อยที่สุดในลำดับที่ 1
6 หมายถึง ไม่คำนึงค่าผิดพลาด
เมื่อเทียบสูตรกับไวยากรณ์ด้านบนจะเห็นว่าส่วนประกอบอื่นมีการใช้แบบตรงไปตรงมา โดยในส่วนของ array ได้เป็น
array คือ (ROW('Trd2'!$A$2:$A$4)-ROW('Trd2'!$A$2)+1)/(('Trd2'!$A$2:$A$4<>"")*('Trd2'!$A$2:$A$4='Trd2'!$A$3:$A$5))
เมื่อกระจายออกมาแล้วสูตรพวกนี้ไม่ใช่ของยาก หากต้องการทราบว่าแต่ละส่วนประกอบคืออะไรให้ลากเมาส์คลุมแล้วกดแป้น F9 ยกตัวอย่างเช่น
- ลากเมาส์คลุม ROW('Trd2'!$A$2:$A$4) > กดแป้น F9 สังเกตผลลัพธ์ > กดแป้น ESC เพื่อยกเลิกการแปลผล
- ลากเมาส์คลุม ROW('Trd2'!$A$2:$A$4)-ROW('Trd2'!$A$2) > กดแป้น F9 สังเกตผลลัพธ์ > กดแป้น ESC เพื่อยกเลิกการแปลผล
- ลากเมาส์คลุม ROW('Trd2'!$A$2:$A$4)-ROW('Trd2'!$A$2)+1 > กดแป้น F9 สังเกตผลลัพธ์ > กดแป้น ESC เพื่อยกเลิกการแปลผล
- ลากเมาส์คลุม 'Trd2'!$A$2:$A$4<>"" > กดแป้น F9 สังเกตผลลัพธ์ > กดแป้น ESC เพื่อยกเลิกการแปลผล
- ลากเมาส์คลุม 'Trd2'!$A$2:$A$4='Trd2'!$A$3:$A$5 > กดแป้น F9 สังเกตผลลัพธ์ > กดแป้น ESC เพื่อยกเลิกการแปลผล
- ลากเมาส์คลุม ('Trd2'!$A$2:$A$4<>"")*('Trd2'!$A$2:$A$4='Trd2'!$A$3:$A$5) > กดแป้น F9 สังเกตผลลัพธ์ > กดแป้น ESC เพื่อยกเลิกการแปลผล
- ลากเมาส์คลุม (ROW('Trd2'!$A$2:$A$4)-ROW('Trd2'!$A$2)+1)/(('Trd2'!$A$2:$A$4<>"")*('Trd2'!$A$2:$A$4='Trd2'!$A$3:$A$5))) > กดแป้น F9 สังเกตผลลัพธ์ > กดแป้น ESC เพื่อยกเลิกการแปลผล
- ฯลฯ
สิ่งสำคัญเหนือสิ่งอื่นใดคือ ให้ทำความเข้าใจแต่ละฟังก์ชั่นอย่างละเอียด ในการถามและตอบปัญหาที่ผ่านมา คุณ March201711 ได้รับคำตอบจากฟังก์ชั่นพวกนี้ไปจำนวนมากแล้ว พยายามใช้เวลาแกะสูตรให้มากกว่าเดิมครับ
You do not have the required permissions to view the files attached to this post.