Page 1 of 1

ความเร็วของสูตร VLOOKUP กับ INDEX+Match

Posted: Wed Dec 28, 2011 10:00 am
by bank9597
:D อาจารย์ครับ ผมขออนุญาตถามเกี่ยวกับสูตรเพื่อเป็นความรู้หน่อยน่ะครับ คือว่าผมมีสูตร :ard:
=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 ทำงานเร็วกว่าครับ :P

Re: ความเร็วของสูตร VLOOKUP กับ INDEX+Match

Posted: Wed Dec 28, 2011 11:20 am
by bank9597
:D :D :D ขอบคุณมากครับ อิอิ

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
:D ความเร็วหมายถึงความเร็วในการแสดงผลลัพธ์ครับ สำหรับสูตรที่คุณ Bank9597 ถามนั้น กรณีที่คีย์ปุ๊บแสดงผลลัพธ์เลยและครบทุกตำแหน่งที่เป็นสูตรมีได้สองประเด็นหลัก คือ สูตรทำงานเร็วกับพื้นที่สูตรมีจำนวนน้อย เนื่องจากเป็นสูตรที่มุ่งหมายที่จะใช้กับขอบเขตข้อมูลขนาดใหญ่

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

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
:D จาก 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))

โดยที่
  1. ResultArray คือตารางข้อมูลมีทั้งแนวบรรทัดและคอลัมน์
  2. Match(Range1,RangeForMatch1,0) ผลลัพธ์ของสูตรนี้จะใช้แทนบรรทัดที่ต้องการนำมาแสดงผล
  3. 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
:D กระทู้นี้กลายเป็นกระทู้ที่ทรงคุณค่าไปเลยครับ เมื่อมีการถามและตอบกันหลายประเด็น ขอบคุณในความเอื้อเฟื้อน่ะครับ :D