Page 1 of 1
การใช้ vlookup ค่าที่ซ้ำกัน 2 แถว
Posted: Mon Feb 25, 2013 11:40 pm
by passive3
เรียนถามอาจารย์ครับ
ถ้าต้องการที่จะใช้คำสั่ง vlookup โดยการเปรียบเทียบข้อมูลที่ใกล้เคียงที่สุดซึ่งแต่ละแถวก็จะมีค่าซ้ำกันใน 2 แถวนั้น
ควรที่จะประยุกต์ใช้อย่างไรครับ
เช่น
เรามีชุดข้อมูล
x=10587852 y=556147 value=6.74
x=10587852 y=556148 value=6.62
x=10587852 y=556149 value=6.41
ค่าที่ป้อนลงไปเป็น
x=10587849 y=556148
ค่าที่ควรจะออกมาควรจะเป็น 6.62
แต่โปรแกรมจะส่งกลับเป็น 6.74 ซึ่งไม่ได้เป็นการเปรียบเทียบในตัวแปร y ออกมา
รบกวนอาจารย์หน่อยนะครับ
โดยผมได้แนบตัวอย่างมาในไฟล์แนบครับ
ขอบคุณครับอาจารย์
Re: การใช้ vlookup ค่าที่ซ้ำกัน 2 แถว
Posted: Tue Feb 26, 2013 7:23 am
by snasui

ช่วยอธิบายคำว่าใกล้เคียงมาให้ทราบด้วยครับว่า
พิจารณาความใกล้เคียงอย่างไร
Re: การใช้ vlookup ค่าที่ซ้ำกัน 2 แถว
Posted: Tue Feb 26, 2013 10:31 pm
by passive3
ใกล้เคียงกับตัวเลขที่เราทำการป้อนลงไปมากที่สุดกับค่าในแต่ละแนวแกนครับ
เช่นชุดข้อมูลเป็น
x = 100 200 300 100 200 300
y = 150 250 350 450 550 650
V = A B C D E F
ตามลำดับนะครับ
เช่น
หากป้อนค่า
x = 160
ค่าที่ทำการเลือกควรจะเป็น 200
โดยผลต่างในแนวแกน|200-160|=40
ซึ่งจะใกล้เคียงกว่า |100-160|=60
โดยค่า 200 มีความเป็นไปได้ในตำแหน่งที่ 2 และ 5
เพื่อทำการตรวจสอบค่า y อีกขั้นตอนหนึ่ง
y = 535
จากการตรวจสอบค่าจาก x ซึ่งมี 2 ค่าที่เป็นไปได้ซึ่งควรจะเป็น x ในตำแหน่งที่ 2(250) และ 5(550)
|250-535|=285 ตำแหน่งที่ 2
|550-535|=15 ตำแหน่งที่ 5 ใกล้เคียงมากสุด
ดังนั้นค่าที่ควรจะออกมาควรเป็น E
ผมไม่แน่ใจว่าผมอธิบายความหมายของคำว่าใก้ลเคียงถูกมั้ยนะครับ
ขอบคุณครับอาจารย์
Re: การใช้ vlookup ค่าที่ซ้ำกัน 2 แถว
Posted: Tue Feb 26, 2013 11:56 pm
by snasui

ตัวอย่างไฟล์ที่แนบมามีค่าซ้ำกันหลายค่าที่ x และ y แต่มีค่า Value ที่ต่างกัน กรณีเช่นนี้จะพิจารณาอย่างไรครับ ที่ I3 และ I4 คำตอบที่ถูกต้องคือค่าใดครับ
Re: การใช้ vlookup ค่าที่ซ้ำกัน 2 แถว
Posted: Wed Feb 27, 2013 12:42 am
by passive3
ตัวอย่างไฟล์ที่แนบมาผมคงจะงงๆไปหน่อยขออภัยด้วยนะครับ
โดยการพิจารณาซึ่งถ้าค่า x ซ้ำกัน จะเก็บทุกแถวที่ซ้ำกันไว้แล้วไปพิจารณาที่ค่า y ในแถวที่เก็บค่าไว้อีกทีหนึ่ง
และจะได้แถวสุดท้ายซึ่งจะมีแถวเดียวแล้วให้ทำการเลือกแสดง value ออกมาครับ
ผมได้ทำการแนบไฟล์สำหรับอธิบายประกอบเพิ่มเติมมาด้วยครับ
ขอบคุณครับอาจารย์
Re: การใช้ vlookup ค่าที่ซ้ำกัน 2 แถว
Posted: Wed Feb 27, 2013 1:11 pm
by snasui

ลองตามนี้ครับ
ที่ C18 คีย์
=MIN(IF(ABS($A$2:$A$11-C14)=MIN(ABS($A$2:$A$11-C14)),IF(ABS($C$2:$C$11-C15)=MIN(ABS($C$2:$C$11-C15)),$E$2:$E$11)))
Ctrl+Shift+Enter
!
| Note: Ctrl+Shift+Enter หมายถึงเมื่อคีย์สูตรแล้ว แทนที่จะกด Enter ให้กดแป้น Ctrl+Shift ค้างไว้แล้วกด Enter เพื่อสร้างเป็นสูตร Array หากกดแป้นถูกต้องสูตรนั้นจะมีเครื่องหมายปีกกาครอบ เช่น {=YourFormulas(...)} ปีกกานี้คีย์เข้าไปเองไม่ได้ ถ้ายังไม่เห็นปีกกาครอบสูตรแสดงว่ากดแป้นให้รับสูตรไม่ถูกต้อง |
Re: การใช้ vlookup ค่าที่ซ้ำกัน 2 แถว
Posted: Wed Feb 27, 2013 2:52 pm
by passive3
ขอบคุณนะครับอาจารย์
ผลลัพธ์ที่ได้ออกมาได้โดยไม่ต้องใช้ vlook up เลย
ผมรบกวนอาจารย์อธิบายกระบวนการคิดในการใช้สูตรนี้หน่อยนะครับ
เพื่อในภายภาคหน้าอาจจะนำกระบวนการคิดไปใช้งานได้ครับ
ขอบคุณครับ
Re: การใช้ vlookup ค่าที่ซ้ำกัน 2 แถว
Posted: Wed Feb 27, 2013 3:15 pm
by snasui

สูตรข้างต้นเป็นสูตร Array จึงค่อนข้างซับซ้อนครับ
จากสูตร =MIN(IF(ABS($A$2:$A$11-C14)=MIN(ABS($A$2:$A$11-C14)),IF(ABS($C$2:$C$11-C15)=MIN(ABS($C$2:$C$11-C15)),$E$2:$E$11))) หมายความว่าให้หาค่าที่น้อยที่สุดจากผลลัพธ์ของ IF(ABS($A$2:$A$11-C14)=MIN(ABS($A$2:$A$11-C14)),IF(ABS($C$2:$C$11-C15)=MIN(ABS($C$2:$C$11-C15)),$E$2:$E$11))
จากสูตร IF(
ABS($A$2:$A$11-C14)=MIN(ABS($A$2:$A$11-C14)),IF(ABS($C$2:$C$11-C15)=MIN(ABS($C$2:$C$11-C15)),$E$2:$E$11)) หมายความว่าหาก
ABS($A$2:$A$11-C14)=MIN(ABS($A$2:$A$11-C14)) เป็นจริงแล้วให้แสดงผลลัพธ์ของ IF(ABS($C$2:$C$11-C15)=MIN(ABS($C$2:$C$11-C15)),$E$2:$E$11)
จากสูตร IF(
ABS($C$2:$C$11-C15)=MIN(ABS($C$2:$C$11-C15)),$E$2:$E$11) หมายความว่าหาก
ABS($A$2:$A$11-C14)=MIN(ABS($A$2:$A$11-C14) เป็นจริงแล้วให้แสดงผลลัพธ์ของ $E$2:$E$11
Re: การใช้ vlookup ค่าที่ซ้ำกัน 2 แถว
Posted: Wed Feb 27, 2013 3:27 pm
by passive3
ขอบคุณอาจารย์สำหรับคำอธิบายครับ