Page 1 of 1
ความเร็วของสูตร VLOOKUP กับ INDEX+Match
Posted: Wed Dec 28, 2011 10:00 am
by bank9597

อาจารย์ครับ ผมขออนุญาตถามเกี่ยวกับสูตรเพื่อเป็นความรู้หน่อยน่ะครับ คือว่าผมมีสูตร
=IF($C13="","",VLOOKUP($C13,Order!$A$6:$F$2000,6,FALSE))
และ
=IF(C13="","",INDEX(Order!$F$6:$F$2000,MATCH(C13,Order!$A$6:$A$2000,0)))
ทั้ง 2 สูตรนี้ ใช้งานได้เหมือนกัน แต่ผมอยากทราบว่าถ้าข้อมูลเยอะมากขึ้น สูตรไหนจะทำงานเร็วกว่ากันครับ
รบกวนชี้แนะด้วยครับ
Re: ความเร็วของสูตร VLOOKUP กับ INDEX+Match
Posted: Wed Dec 28, 2011 10:10 am
by snasui
หากจำนวนข้อมูลมากขึ้นเรื่อย ๆ ฟังก์ชั่น Index และ Match ทำงานเร็วกว่าครับ

Re: ความเร็วของสูตร VLOOKUP กับ INDEX+Match
Posted: Wed Dec 28, 2011 11:20 am
by bank9597
Re: ความเร็วของสูตร VLOOKUP กับ INDEX+Match
Posted: Thu Dec 29, 2011 8:51 am
by ChoBkuN
ถามเพิ่มเติมครับ
ความเร็วที่ว่านี่ มันยังไงเหรอครับ
ผมเข้าใจว่า ปกติพิมพ์สูตรเสร็จ กด enter ผลมันก็ขึ้นเลยไม่ใช่เหรอครับ ???
Re: ความเร็วของสูตร VLOOKUP กับ INDEX+Match
Posted: Thu Dec 29, 2011 9:02 am
by snasui

ความเร็วหมายถึงความเร็วในการแสดงผลลัพธ์ครับ สำหรับสูตรที่คุณ Bank9597 ถามนั้น กรณีที่คีย์ปุ๊บแสดงผลลัพธ์เลยและครบทุกตำแหน่งที่เป็นสูตรมีได้สองประเด็นหลัก คือ สูตรทำงานเร็วกับพื้นที่สูตรมีจำนวนน้อย เนื่องจากเป็นสูตรที่มุ่งหมายที่จะใช้กับขอบเขตข้อมูลขนาดใหญ่
Vlookup ที่ส่วนประกอบในสูตรเป็นช่วงข้อมูลขนาดใหญ่และใช้สูตรเป็นจำนวนมาก (หลายเซลล์) โอกาสจะกด Enter แล้วแสดงผลลัพธ์ครบทุกเซลล์ที่เป็นสูตรทันทีนั้นแทบจะเป็นไปไม่ได้ครับ เนื่องจากโปรแกรมต้องใช้เวลาประมวลผล ยกเว้นจะใช้ CPU ที่มีความเร็วสูงก็จะช่วยลดเวลาลงได้ครับ

Re: ความเร็วของสูตร VLOOKUP กับ INDEX+Match
Posted: Thu Dec 29, 2011 9:07 am
by ChoBkuN
ถามเพิ่มอีกข้อครับ
=IF($C13="","",VLOOKUP($C13,Order!$A$6:$F$2000,6,FALSE))
สูตร Vlookup คือ ให้ดึงค่า cell อ้างอิงที่เหมือนกันในช่องที่ 6
=IF(C13="","",INDEX(Order!$F$6:$F$2000,MATCH(C13,Order!$A$6:$A$2000,0)))
ตรงจุดไหน คือ บอกว่าให้ดึงค่าจากช่องที่ 6 เหมือน vlookup ครับ ??
Re: ความเร็วของสูตร VLOOKUP กับ INDEX+Match
Posted: Thu Dec 29, 2011 9:30 am
by snasui

จาก Vlookup จะเห็นว่าเป็นการคลุม Order!$
A$6:$
F$2000 แล้วคอลัมน์ 6 คือ
F
ส่วน Index บอกกันตรง ๆ ว่าให้เอาคอลัมน์ F มาแสดงนั่นคือ Order!$
F$6:$
F$2000 จึงไม่ต้องบอกว่าให้เอาคอลัมน์ที่เท่าไรเนื่องจากเป็นการคลุมเพียงคอลัมน์เดียว
แต่ถ้าคลุมเป็น
ตารางข้อมูลก็จำเป็นต้องระบุคอลัมน์เพิ่มเข้ามาด้วย ซึ่งสามารถใช้สูตรในการระบุคอลัมน์เข้ามาช่วยได้เช่นกัน Form สูตรก็จะได้เป็น
=Index(ResultArray,Match(Range1,RangeForMatch1,0),Match(Range2,RangeForMatch2,0))
โดยที่
- ResultArray คือตารางข้อมูลมีทั้งแนวบรรทัดและคอลัมน์
- Match(Range1,RangeForMatch1,0) ผลลัพธ์ของสูตรนี้จะใช้แทนบรรทัดที่ต้องการนำมาแสดงผล
- Match(Range2,RangeForMatch2,0) ผลลัพธ์ของสูตรนี้จะใช้แทนคอลัมน์ที่ต้องการนำมาแสดงผล
Note: ไวยากรณ์ของ Index แบบอ้างอิงตารางข้อมูลคือ Index(ตารางข้อมูล, บรรทัดที่ต้องการแสดงผล, คอลัมน์ที่ต้องการแสดงผล)
Re: ความเร็วของสูตร VLOOKUP กับ INDEX+Match
Posted: Thu Dec 29, 2011 9:32 am
by ChoBkuN
ขอบคุณครับ
ผมสังเกตว่า ช่วงข้อมูลในสูตรไม่เหมือนกัน
a กับ f
แล้วก็ทำให้รู้ว่า เปลี่ยน 0 เป็นสูตร เพิ่มระบุตำแหน่งได้
Re: ความเร็วของสูตร VLOOKUP กับ INDEX+Match
Posted: Sat Jan 07, 2012 10:02 am
by bank9597

กระทู้นี้กลายเป็นกระทู้ที่ทรงคุณค่าไปเลยครับ เมื่อมีการถามและตอบกันหลายประเด็น ขอบคุณในความเอื้อเฟื้อน่ะครับ
