Page 1 of 1

สอบถามการดึงข้อมูลจำนวนหลายแถว มาแสดงผลการค้นหา

Posted: Tue Apr 09, 2019 2:10 pm
by nopporn24
สอบถามเพื่อนๆสมาชิกด้วยครับ ผมต้องการดึงข้อมูลจากคนละ Worksheet โดยการใส่คำค้นหา เพื่อให้ดึงข้อมูลจากอีก Sheet มาแสดง ซึ่งคำค้นหาแต่ละคำ จะมีจำนวนแถวไม่เท่ากัน ปกติเคยใช้แต่ Vlookup หรือ index+match แต่จะมีข้อมูลเพียงแถวเดียว ก็จะสามารถค้นหาและดึงมาแสดงได้ แต่ด้วยจำนวนที่แต่ละคำ มีจำนวนรายการไม่เท่ากัน จะต้องใช้ฟังก์ชั่นยังไง ขอบคำแนะนำด้วยครับ ผมแนบไฟล์ตัวอย่างให้ช่วยดูให้ด้วยครับ

ขอขอบพระคุณล่วงหน้าเป็นอย่างสูงสำหรับคำตอบและคำแนะนำดีๆครับ

Re: สอบถามการดึงข้อมูลจำนวนหลายแถว มาแสดงผลการค้นหา

Posted: Tue Apr 09, 2019 2:21 pm
by Supachok
A4
=IFERROR(INDEX(ข้อมูล!A$3:A$100,SMALL(IF($C$1=ข้อมูล!$A$3:$A$100,ROW(ข้อมูล!$A$1:$A$97)),ROW(A1))),"")

Array formula {}
Copy down + right


A4 อีกแบบ
=IFERROR(INDEX(ข้อมูล!A$3:A$99,AGGREGATE(15,6,ROW($A$1:$A$97)/(แสดงรายการ!$C$1=ข้อมูล!$A$3:$A$97),ROW(A1))),"")

Re: สอบถามการดึงข้อมูลจำนวนหลายแถว มาแสดงผลการค้นหา

Posted: Tue Apr 09, 2019 3:23 pm
by nopporn24
Supachok wrote: Tue Apr 09, 2019 2:21 pm A4
=IFERROR(INDEX(ข้อมูล!A$3:A$100,SMALL(IF($C$1=ข้อมูล!$A$3:$A$100,ROW(ข้อมูล!$A$1:$A$97)),ROW(A1))),"")

Array formula {}
Copy down + right


A4 อีกแบบ
=IFERROR(INDEX(ข้อมูล!A$3:A$99,AGGREGATE(15,6,ROW($A$1:$A$97)/(แสดงรายการ!$C$1=ข้อมูล!$A$3:$A$97),ROW(A1))),"")
ขอบคุณมากๆครับ เรื่อง Array เป็นอะไรที่ผมยังไม่เข้าใจเลยครับ ผมขอคำอธิบาย สูตร Array ตัวแรก แบบทีละตัวได้ไหมครับ ผมลองเอามาใส่ในตัวอย่างทำได้ตามที่ต้องการเลยครับ แต่พอเอามาใช้ในไฟล์จริงผม ผมใส่ค่าไม่ถูกครับ ไม่แสดงข้อมูลครับ :cry: :cry: :cry:

Re: สอบถามการดึงข้อมูลจำนวนหลายแถว มาแสดงผลการค้นหา

Posted: Tue Apr 09, 2019 3:30 pm
by Supachok
อธิบายแบบนี้

INDEX(ข้อมูล!A$3:A$100,

SMALL( if )ROW(A1))),"")

IF($C$1=ข้อมูล!$A$3:$A$100,ROW(ข้อมูล!$A$1:$A$97)),
ถ้า C1 = A3:A100 ตรวจมีตัวใดเหมือนบ้าง
ถ้าเหมือนให้แสดง Row (1,2,3,4,5,6.......,95,96,97)

ตย.
หากเหมือนเฉพาะตัวแรกและสุดท้ายจะได้ (1,false,...............,false,97)

สูตร small จะได้ Array จาก if small(1,false,...............,false,97),row(a1)
row(a1) = 1
จะได้ค่าที่่ 1

จากนั้น INDEX จะได้ค่า small มาประกอบเพื่อค่าตำแหน่่ง row
INDEX(ข้อมูล!A$3:A$100,(small)

Re: สอบถามการดึงข้อมูลจำนวนหลายแถว มาแสดงผลการค้นหา

Posted: Tue Apr 09, 2019 3:37 pm
by nopporn24
Supachok wrote: Tue Apr 09, 2019 3:30 pm อธิบายแบบนี้

INDEX(ข้อมูล!A$3:A$100,

SMALL( if )ROW(A1))),"")

IF($C$1=ข้อมูล!$A$3:$A$100,ROW(ข้อมูล!$A$1:$A$97)),
ถ้า C1 = A3:A100 ตรวจมีตัวใดเหมือนบ้าง
ถ้าเหมือนให้แสดง Row (1,2,3,4,5,6.......,95,96,97)

ตย.
หากเหมือนเฉพาะตัวแรกและสุดท้ายจะได้ (1,false,...............,false,97)

สูตร small จะได้ Array จาก if small(1,false,...............,false,97),row(a1)
row(a1) = 1
จะได้ค่าที่่ 1

จากนั้น INDEX จะได้ค่า small มาประกอบเพื่อค่าตำแหน่่ง row
INDEX(ข้อมูล!A$3:A$100,(small)
ขอบคุณมากครับ