Page 1 of 1
ขอสอบการใช้สูตร vlookup ครับ
Posted: Mon Aug 10, 2015 2:57 pm
by oanirud
สวัสดีครับ ผมใช้สูตร vlookup ในการหาข้อมูล แต่ผมอยากทราบว่าถ้าต้องการให้มันโชว์ 2 แถว ต้องเขียนยังไงต่อครับ
ผมค้นหาด้วยเลข 14 แต่มันโชว์แค่แถวเดียวครับ
แบบที่ต้องการ
10-8-58-1.png
แบบที่ได้ออกมาครับ
10-8-58.png
ขอบคุณล่วงหน้าครับ
ไฟล์แนบครับ
id cannot.xlsx
Re: ขอสอบการใช้สูตร vlookup ครับ
Posted: Mon Aug 10, 2015 3:15 pm
by bank9597
ที่ A3 คีย์
Code: Select all
=IFERROR(INDEX(Sheet2!B$2:B$147,SMALL(IF(Sheet2!$A$2:$A$147=$A$1,ROW(Sheet2!$A$2:$A$147)-ROW(Sheet2!$A$2)+1),ROWS($B$3:B3))),"")
กด Ctrl+Shift+Enter คัดลอกทางขวา แล้วลงล่างพร้อมกัน
Re: ขอสอบการใช้สูตร vlookup ครับ
Posted: Mon Aug 10, 2015 3:25 pm
by oanirud
ขึ้นแต่ชื่อครับ แต่ข้อมูลมันซ้ำกันครับ ลองเปลี่ยนแล้วข้อมูลก็ไม่ตรงครับ
10-8-58-2.png
ขอบคุณครับ
แก้ไขครับ ทำได้แล้วครับ ขอบคุณครับ
รบกวนอีกอย่างครับ ช่วยอธิบายตรงสูตรได้ไหมครับ อยากได้แบบละเอียดเลยครับ
ขอบคุณมากๆครับ
Re: ขอสอบการใช้สูตร vlookup ครับ
Posted: Mon Aug 10, 2015 3:52 pm
by bank9597
ลองดูตามไฟล์แนบครับ
Re: ขอสอบการใช้สูตร vlookup ครับ
Posted: Mon Aug 10, 2015 4:21 pm
by oanirud
ขอบคุณครับผม
Re: ขอสอบการใช้สูตร vlookup ครับ
Posted: Wed Aug 12, 2015 7:59 am
by snasui
oanirud wrote:ช่วยอธิบายตรงสูตรได้ไหมครับ อยากได้แบบละเอียดเลยครับ
ในแบบละเอียดควรศึกษามาโดยตนเองจากแต่ละฟังก์ชั่นตามที่จะอธิบายตามด้านล่าง ไม่เข้าใจตรงไหนค่อยมาถามกันต่อครับ โดยสามารถศึกษาฟังก์ชั่นต่าง ๆ จาก Link นี้ครับ
Excel Functions
จากสูตร
=IFERROR(INDEX(Sheet2!B$2:B$147,SMALL(IF(Sheet2!$A$2:$A$147=$A$1,ROW(Sheet2!$A$2:$A$147)-ROW(Sheet2!$A$2)+1),ROWS($B$3:B3))),"")
ลำดับความคิดของสูตรตามด้านล่างครับ
- หาค่าบรรทัดของข้อมูลออกมาให้ได้ก่อนว่า ข้อมูลบรรทัดใดตรงตามเงื่อนไขบ้างโดยใช้สูตร
=IF(Sheet2!$A$2:$A$147=$A$1,ROW(Sheet2!$A$2:$A$147)-ROW(Sheet2!$A$2)+1)
หมายถึง หาก Sheet2!$A$2:$A$147=$A$1 เป็นจริงแล้ว ให้แสดงลำดับบรรทัดของข้อมูล โดยเริ่มจากบรรทัดที่ 1 เสมอ หากไม่เป็นจริงให้แสดงค่า False
- เนื่องจากข้อมูลที่เข้าเงื่อนไขมีหลายบรรทัด เราสามารถนำค่าบรรทัดข้อมูลออกมาแสดงทีละบรรทัดได้โดยใช้ Small เข้ามาช่วย จะได้เป็น
=SMALL(IF(Sheet2!$A$2:$A$147=$A$1,ROW(Sheet2!$A$2:$A$147)-ROW(Sheet2!$A$2)+1),ROWS($B$3:B3))
หมายถึงจากคำตอบตามข้อ 1 ให้นำค่าที่น้อยที่สุดเป็นลำดับที่ 1 มาแสดง หาก Copy ลงไปด้านล่างอีกบรรทัด ก็จะหมายถึง จากคำตอบตามข้อ 1 ให้ค่าที่น้อยที่สุดเป็นลำดับที่ 2 มาแสดง เช่นนี้ไปเรื่อยๆ
- จากขั้นตอนที่ 2 เราได้ค่าบรรทัดของข้อมูลมาแล้ว หากต้องการนำข้อมูลมาแสดง สามารถใช้ Index เข้ามาช่วยได้ จะได้เป็น
=INDEX(Sheet2!B$2:B$147,SMALL(IF(Sheet2!$A$2:$A$147=$A$1,ROW(Sheet2!$A$2:$A$147)-ROW(Sheet2!$A$2)+1),ROWS($B$3:B3)))
หมายถึง จากช่วงข้อมูล Sheet2!B$2:B$147 ให้นำข้อมูลในลำดับที่ได้จากผลลัพธ์ของข้อ 2 มาแสดง
- หากเรา Copy สูตรตามข้อ 3 ลงไปด้านล่างเรื่อย ๆ จนหมดข้อมูลที่เข้าเงื่อนไขแล้วจะเกิด Error หากไม่ต้องการให้แสดง Error สามารถใช้ Iferror เข้ามาช่วยได้เป็น
=IFERROR(INDEX(Sheet2!B$2:B$147,SMALL(IF(Sheet2!$A$2:$A$147=$A$1,ROW(Sheet2!$A$2:$A$147)-ROW(Sheet2!$A$2)+1),ROWS($B$3:B3))),"")
หมายถึง หากผลลัพธ์ตามข้อ 3 เป็นค่าผิดพลาดให้แสดงค่าว่าง หากไม่ผิดพลาดให้แสดงผลลัพธ์ตามปกติ