Page 1 of 1
สอบถามเรื่อง Vlookup ครับ
Posted: Fri Feb 02, 2018 11:39 am
by arampong
สวัสดีครับ
ผมอยากจะดึงข้อมูลโดยข้อมูลผมเป็นแบบนี้ครับ
Sheet1 Sheet2
A B A B
DD1 11 DD1
DD1 12 DD2
DD1 13
DD2 21
DD2 22
DD2 23
ผมใช้ Vlookup อะไรได้หรือไม่โดย ดึงข้อมูลมาเรียงกันได้คำตอบดังนี้
ที่ Sheet2
A B
DD1 11,12,13
DD2 21,22,23
ปกติผมใช้ Vlookup ดึงค่าได้แค่แถวเดียว ผมต้องทำอย่างไร ช่วยแนะนำหน่อยครับ
ขอบคุณครับ
Re: สอบถามเรื่อง Vlookup ครับ
Posted: Fri Feb 02, 2018 11:59 am
by arampong
ขอโทษครับ พอดีพิมพ์แล้วมันติดกัน เลยแนบรูปมาใหม่
คำตอบที่อยากได้คือ Sheet2 คอลัมB ที่เป้นสีเขียวครับ
ขอบคุณครับ
Re: สอบถามเรื่อง Vlookup ครับ
Posted: Fri Feb 02, 2018 12:59 pm
by puriwutpokin
ควรแนบไฟล์ตัวอย่างมาด้วยครับ จะได้สะดวกต่อการตอบของเพื่อนๆ สมาชิกครับ
Re: สอบถามเรื่อง Vlookup ครับ
Posted: Fri Feb 02, 2018 1:13 pm
by arampong
File ครับ
Re: สอบถามเรื่อง Vlookup ครับ
Posted: Fri Feb 02, 2018 2:04 pm
by puriwutpokin
1.ที่ ชีต Sheet1 แทรกบรรทัดที่แถวที่ 1 ให้เป็นแถวว่าง ตามรูปครับ
2.ที่ ชีต Sheet1 C3=IFERROR(LOOKUP(2,1/(A$1:A1=A2),C$1:C1)&",","")&B2 คัดลอกลงล่าง
3. ที่ ชีต Sheet2 A1=IFERROR(INDEX(Sheet1!A$3:A$15,SMALL(IF(FREQUENCY(IF(Sheet1!A$2:A$15<>"",MATCH(Sheet1!A$2:A$15,Sheet1!A$2:A$15,0)),ROW(Sheet1!A$3:A$15)-ROW(Sheet1!A$3)+1),ROW(Sheet1!A$3:A$15)-ROW(Sheet1!A$3)+1),ROWS(A$1:A1))),"") กด Ctrl+Shift+Enter แล้วลากลงล่าง
4.ชีต Sheet2 B1=LOOKUP(2,1/(Sheet1!A$2:A$15=A1),Sheet1!C$2:C$15) คัดลอกลงล่างครับ
Re: สอบถามเรื่อง Vlookup ครับ
Posted: Fri Feb 02, 2018 3:06 pm
by arampong
โห สุดยอดเลยครับ
ขอบคุณมากครับ แต่ งงมากเลยครับ กับCode ที่ให้
เดี๋ยวจะลองแกะแยกส่วน code ดูครับ
หากจะกรุณาอีกนิด ช่วยอธิบายหน่อยได้หรือไม่ครับ
ขอบคุณอีกครั้งครับ
Re: สอบถามเรื่อง Vlookup ครับ
Posted: Fri Feb 02, 2018 4:44 pm
by arampong
พี่ครับผมเอาไปดัดแปลงแล้วติดที่ข้อ
3. ที่ ชีต Sheet2
และได้แนบ Sheet 5 กับ Sheet 6
มาใน File ด้วยครับที่ติด
ช่วยแนะนำอีกครั้งครับ
ขอบคุณครับ
Re: สอบถามเรื่อง Vlookup ครับ
Posted: Fri Feb 02, 2018 4:45 pm
by arampong
ลืม File
Re: สอบถามเรื่อง Vlookup ครับ
Posted: Fri Feb 02, 2018 5:04 pm
by puriwutpokin
ปรับเป็นที่ ชีต Sheet6 B11=IFERROR(INDEX(Sheet5!C$2:C$29,SMALL(IF(FREQUENCY(IF(Sheet5!C$2:C$29<>"",MATCH(Sheet5!C$2:C$29,Sheet5!C$2:C$29,0)),ROW(Sheet5!C$2:C$29)-ROW(Sheet5!C$2)+1),ROW(Sheet5!C$2:C$29)-ROW(Sheet5!C$2)+1),ROWS(B$11:B11))),"") Ctrl+Shift+Enter แล้วลากลงล่าง
D11=LOOKUP(2,1/(Sheet5!C$2:C$39=B11),Sheet5!N$2:N$39) คัดลอกลงล่างครับ
Re: สอบถามเรื่อง Vlookup ครับ
Posted: Sat Feb 03, 2018 11:38 am
by arampong
ขอบคุณมากครับคุณ puriwutpokin
คือพอผมลองใช้กับงานจริง ที่ Sheet1 มีทั้งหมด 9780 แถว
พอใช้ B11=IFERROR(INDEX(Sheet5!C$2:C$29,SMALL(IF(FREQUENCY(IF(Sheet5!C$2:C$29<>"",MATCH(Sheet5!C$2:C$29,Sheet5!C$2:C$29,0)),ROW(Sheet5!C$2:C$29)-ROW(Sheet5!C$2)+1),ROW(Sheet5!C$2:C$29)-ROW(Sheet5!C$2)+1),ROWS(B$11:B11))),"")
มันช้ามากเลยครับ อาจเป็นเพราะมีข้อมูลเยอะไปใช่หรือไม่ครับ
พอจะมีวิธีอื่นหรือไม่ครับ หรือแนะนำได้หรือไม่ครับ
Re: สอบถามเรื่อง Vlookup ครับ
Posted: Sat Feb 03, 2018 11:59 am
by puriwutpokin
arampong wrote: Sat Feb 03, 2018 11:38 am
ขอบคุณมากครับคุณ puriwutpokin
คือพอผมลองใช้กับงานจริง ที่ Sheet1 มีทั้งหมด 9780 แถว
พอใช้ B11=IFERROR(INDEX(Sheet5!C$2:C$29,SMALL(IF(FREQUENCY(IF(Sheet5!C$2:C$29<>"",MATCH(Sheet5!C$2:C$29,Sheet5!C$2:C$29,0)),ROW(Sheet5!C$2:C$29)-ROW(Sheet5!C$2)+1),ROW(Sheet5!C$2:C$29)-ROW(Sheet5!C$2)+1),ROWS(B$11:B11))),"")
มันช้ามากเลยครับ อาจเป็นเพราะมีข้อมูลเยอะไปใช่หรือไม่ครับ
พอจะมีวิธีอื่นหรือไม่ครับ หรือแนะนำได้หรือไม่ครับ
เป็นธรรมดาของสูตร Array ครับ สูตรตัวนี้เร็วกว่าตัวอื่นเรื่องหาค่าไม่ซ้ำแล้วครับ ลองสร้างเป็น Range Name ดูเผื่อจะดีขึ้น
ถ้าไม่อย่างนั้น คงต้องใช้ เมนูแท็บ Data หัวข้อ Remove Duplicates ตัดค่าซ้ำมาครับ จะได้ไม่ต้องใช้สูตร หรือไม่ก็ใช้ VBA ช่วยครับ
Re: สอบถามเรื่อง Vlookup ครับ
Posted: Sat Feb 03, 2018 12:02 pm
by snasui
arampong wrote: Sat Feb 03, 2018 11:38 am
ขอบคุณมากครับคุณ puriwutpokin
คือพอผมลองใช้กับงานจริง ที่ Sheet1 มีทั้งหมด 9780 แถว
พอใช้ B11=IFERROR(INDEX(Sheet5!C$2:C$29,SMALL(IF(FREQUENCY(IF(Sheet5!C$2:C$29<>"",MATCH(Sheet5!C$2:C$29,Sheet5!C$2:C$29,0)),ROW(Sheet5!C$2:C$29)-ROW(Sheet5!C$2)+1),ROW(Sheet5!C$2:C$29)-ROW(Sheet5!C$2)+1),ROWS(B$11:B11))),"")
มันช้ามากเลยครับ อาจเป็นเพราะมีข้อมูลเยอะไปใช่หรือไม่ครับ
พอจะมีวิธีอื่นหรือไม่ครับ หรือแนะนำได้หรือไม่ครับ
arampong wrote: Fri Feb 02, 2018 4:45 pmลืม File

มาช่วยเสริมครับ
ที่มันช้าเพราะข้อมูลจำนวนมาก สูตรนั้นเป็นสูตร Array หากข้อมูลมีจำนวนหลักหมื่นย่อมช้าลงแน่นอน
ตัวอย่างการปรับสูตรให้เร็วขึ้นโดยอาศัยไฟล์ที่แนบมาด้านบน ให้ทำตามด้านล่างครับ
Sheet5
- ที่ B1 คีย์ 0
- ที่ B2 คีย์
=IF(COUNTIF(C$2:C2,C2)=1,LOOKUP(9.99999999999999E+307,B$1:B1)+1,"")
Enter > Copy ลงด้านล่าง
Sheet6
- ที่ A11 คีย์
=LOOKUP(9.99999999999999E+307,Sheet5!B:B)
Enter
- ที่ B11 คีย์
=IF(ROWS(B$11:B11)>$A$11,"",LOOKUP(ROWS(B$11:B11),Sheet5!$B$1:$B$100000,Sheet5!$C$1:$C$100000))
Enter > Copy ลงด้านล่าง
Re: สอบถามเรื่อง Vlookup ครับ
Posted: Mon Feb 05, 2018 8:38 am
by arampong
เรียนอาจารย์ครับ
แล้วคำตอบที่ คอลั่ม D ที่เอาค่ามาต่อกัน ในส่วนของอาจารย์แนะนำ จะดึงมายังไงครับ
ที่ Sheet6
ข้อ1. ผมได้5
ข้อที่2. มันเหมือนเอาค่าที่ sheet5 คอลั่ม C มาแบบไม่ซ้ำ ตรงนี้ปกติผมจะใส่ค่าเองครับเพราะบางทีอยากจะให้เอาแค่ค่าเดียวไปใช้
แต่ถ้าใช้สูตรตามอาจารน์มันจะดึงค่ามาหมดเลยครับ
แล้วคำตอบที่ คอลั่มC ใช้สูตรเดิมใช่หรือไม่ครับ
d=LOOKUP(2,1/(Sheet5!C$2:C$39=B11),Sheet5!N$2:N$39)
แล้วลากลงมาใช่หรือไม่ครับ
ขอบคุณครับ
Re: สอบถามเรื่อง Vlookup ครับ
Posted: Mon Feb 05, 2018 9:01 am
by puriwutpokin
arampong wrote: Mon Feb 05, 2018 8:38 am
เรียนอาจารย์ครับ
แล้วคำตอบที่ คอลั่ม D ที่เอาค่ามาต่อกัน ในส่วนของอาจารย์แนะนำ จะดึงมายังไงครับ
ที่ Sheet6
ข้อ1. ผมได้5
ข้อที่2. มันเหมือนเอาค่าที่ sheet5 คอลั่ม C มาแบบไม่ซ้ำ ตรงนี้ปกติผมจะใส่ค่าเองครับเพราะบางทีอยากจะให้เอาแค่ค่าเดียวไปใช้
แต่ถ้าใช้สูตรตามอาจารน์มันจะดึงค่ามาหมดเลยครับ
แล้วคำตอบที่ คอลั่มC ใช้สูตรเดิมใช่หรือไม่ครับ
d=LOOKUP(2,1/(Sheet5!C$2:C$39=B11),Sheet5!N$2:N$39)
แล้วลากลงมาใช่หรือไม่ครับ
ขอบคุณครับ
arampong wrote: Mon Feb 05, 2018 8:38 am
แล้วคำตอบที่ คอลั่มC ใช้สูตรเดิมใช่หรือไม่ครับ
d=LOOKUP(2,1/(Sheet5!C$2:C$39=B11),Sheet5!N$2:N$39)
แล้วลากลงมาใช่หรือไม่ครับ
อันนี้ยังใช้เหมือนเดิมครับ ส่วนที่ว่า คีย์มือเองนั้น สูตรของอาจารย์คนควน ก็ยังใช้ได้อยู่ครับ ไม่จำเป็นต้องลบสูตรอาจารย์ทิ้ง
ก็แค่คีย์มือในส่วนที่ต้องการ ใช้ข้อมูลเท่านั้นก็ได้ครับ
Re: สอบถามเรื่อง Vlookup ครับ
Posted: Mon Feb 05, 2018 5:06 pm
by arampong
เรียนอาจารย์ทั้งสองท่านครับ
คือผมพยายามปรับมาใช้งานจริงๆ ตามที่อาจารย์แนะนำ
แต่ก็ติดตรง ค่าของ Sheet DDD ตามตัวอย่างแนบครับ
คือจุดประสงค์ อยากจะพิมพ์แล้ว ถ้าข้อมูลตรงกับตาราง iERP ที่คอลั่ม C แล้วให้เอาค่า N ที่หาไว้ที่เอาที่ต่อๆกันตัวที่มากที่สุด
มาแสดงที่ คอลั่ม D ตามตัวอย่างที่แนบมาครับ
แต่ติดตอนนี้คือ พอใส่สูตร Array ที่ชีท Sheet DDD คอลั่ม B ตามอาจารย์ไว้ พอพิมพ์ตัวเลขไปใหม่สูตรก็หายครับ
ค่าก็ไม่ขึ้นครับ ทุกช่องผมอย่ากอยาก Lock ไว้ครับให้พิมได้เฉพาะ คอลั่ม B ครับ
รบกวนช่วยแนะนำทีครับ ว่าจะทำแบบไหนดีครับ
ขอบคุณครับอาจารย์
Re: สอบถามเรื่อง Vlookup ครับ
Posted: Mon Feb 05, 2018 5:25 pm
by puriwutpokin
ที่ชีต DDDDD
เซล B11=IFERROR(INDEX(iERP!C$2:C$835,SMALL(IF(FREQUENCY(IF(iERP!C$2:C$835<>"",MATCH(iERP!C$2:C$835,iERP!C$2:C$835,0)),ROW(iERP!C$2:C$835)-ROW(iERP!C$2)+1),ROW(iERP!C$2:C$835)-ROW(iERP!C$2)+1),ROWS(B$11:B11))),"") กด Ctrl+Shift+Enter
Re: สอบถามเรื่อง Vlookup ครับ
Posted: Mon Feb 05, 2018 10:21 pm
by puriwutpokin
puriwutpokin wrote: Mon Feb 05, 2018 5:25 pm
ที่ชีต DDDDD
เซล B11=IFERROR(INDEX(iERP!C$2:C$835,SMALL(IF(FREQUENCY(IF(iERP!C$2:C$835<>"",MATCH(iERP!C$2:C$835,iERP!C$2:C$835,0)),ROW(iERP!C$2:C$835)-ROW(iERP!C$2)+1),ROW(iERP!C$2:C$835)-ROW(iERP!C$2)+1),ROWS(B$11:B11))),"") กด
Ctrl+Shift+Enter
เพิ่มเติมครับ ที่ชีต iERP_STM_Rpt_Marketing_Detail คอลัมน์ C ข้อมูลมีตัวเลขปนกันตัวอักษร ที่เป็นเลข ให้ เอา 0 ไว้ที่เซลใดๆ แล้ว Copy แล้ว ครอบข้อมูที่ คอลัมน์ C คลิกขวาที่คอลัมน์ C แล้วเลือก วางแบบพิเศษ หรือ Paste special และเลือก บวก หรือ Add ครับ เพื่อให้ข้อมูลถูกต้องครับ
Re: สอบถามเรื่อง Vlookup ครับ
Posted: Wed Feb 07, 2018 8:11 am
by arampong
ขอบคุณมากครับผม