:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

สอบถามเรื่อง Vlookup ครับ

ฟอรัมถาม-ตอบปัญหาการใช้งานสูตรและฟังก์ชัน Excel
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
arampong
Member
Member
Posts: 31
Joined: Wed Jul 08, 2015 11:46 am

สอบถามเรื่อง Vlookup ครับ

#1

Post 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 ดึงค่าได้แค่แถวเดียว ผมต้องทำอย่างไร ช่วยแนะนำหน่อยครับ
ขอบคุณครับ
arampong
Member
Member
Posts: 31
Joined: Wed Jul 08, 2015 11:46 am

Re: สอบถามเรื่อง Vlookup ครับ

#2

Post by arampong »

ขอโทษครับ พอดีพิมพ์แล้วมันติดกัน เลยแนบรูปมาใหม่
คำตอบที่อยากได้คือ Sheet2 คอลัมB ที่เป้นสีเขียวครับ
ขอบคุณครับ
You do not have the required permissions to view the files attached to this post.
User avatar
puriwutpokin
Guru
Guru
Posts: 3801
Joined: Fri Jan 04, 2013 9:49 pm
Location: Bangkok
Excel Ver: MS.365

Re: สอบถามเรื่อง Vlookup ครับ

#3

Post by puriwutpokin »

ควรแนบไฟล์ตัวอย่างมาด้วยครับ จะได้สะดวกต่อการตอบของเพื่อนๆ สมาชิกครับ
:shock: :roll: :D
arampong
Member
Member
Posts: 31
Joined: Wed Jul 08, 2015 11:46 am

Re: สอบถามเรื่อง Vlookup ครับ

#4

Post by arampong »

File ครับ
You do not have the required permissions to view the files attached to this post.
User avatar
puriwutpokin
Guru
Guru
Posts: 3801
Joined: Fri Jan 04, 2013 9:49 pm
Location: Bangkok
Excel Ver: MS.365

Re: สอบถามเรื่อง Vlookup ครับ

#5

Post 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) คัดลอกลงล่างครับ
You do not have the required permissions to view the files attached to this post.
:shock: :roll: :D
arampong
Member
Member
Posts: 31
Joined: Wed Jul 08, 2015 11:46 am

Re: สอบถามเรื่อง Vlookup ครับ

#6

Post by arampong »

โห สุดยอดเลยครับ
ขอบคุณมากครับ แต่ งงมากเลยครับ กับCode ที่ให้
เดี๋ยวจะลองแกะแยกส่วน code ดูครับ

หากจะกรุณาอีกนิด ช่วยอธิบายหน่อยได้หรือไม่ครับ
ขอบคุณอีกครั้งครับ
arampong
Member
Member
Posts: 31
Joined: Wed Jul 08, 2015 11:46 am

Re: สอบถามเรื่อง Vlookup ครับ

#7

Post by arampong »

พี่ครับผมเอาไปดัดแปลงแล้วติดที่ข้อ
3. ที่ ชีต Sheet2

และได้แนบ Sheet 5 กับ Sheet 6
มาใน File ด้วยครับที่ติด
ช่วยแนะนำอีกครั้งครับ
ขอบคุณครับ
arampong
Member
Member
Posts: 31
Joined: Wed Jul 08, 2015 11:46 am

Re: สอบถามเรื่อง Vlookup ครับ

#8

Post by arampong »

ลืม File
You do not have the required permissions to view the files attached to this post.
User avatar
puriwutpokin
Guru
Guru
Posts: 3801
Joined: Fri Jan 04, 2013 9:49 pm
Location: Bangkok
Excel Ver: MS.365

Re: สอบถามเรื่อง Vlookup ครับ

#9

Post 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) คัดลอกลงล่างครับ
:shock: :roll: :D
arampong
Member
Member
Posts: 31
Joined: Wed Jul 08, 2015 11:46 am

Re: สอบถามเรื่อง Vlookup ครับ

#10

Post 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))),"")

มันช้ามากเลยครับ อาจเป็นเพราะมีข้อมูลเยอะไปใช่หรือไม่ครับ
พอจะมีวิธีอื่นหรือไม่ครับ หรือแนะนำได้หรือไม่ครับ
User avatar
puriwutpokin
Guru
Guru
Posts: 3801
Joined: Fri Jan 04, 2013 9:49 pm
Location: Bangkok
Excel Ver: MS.365

Re: สอบถามเรื่อง Vlookup ครับ

#11

Post 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 ช่วยครับ
:shock: :roll: :D
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถามเรื่อง Vlookup ครับ

#12

Post 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
:D มาช่วยเสริมครับ

ที่มันช้าเพราะข้อมูลจำนวนมาก สูตรนั้นเป็นสูตร Array หากข้อมูลมีจำนวนหลักหมื่นย่อมช้าลงแน่นอน

ตัวอย่างการปรับสูตรให้เร็วขึ้นโดยอาศัยไฟล์ที่แนบมาด้านบน ให้ทำตามด้านล่างครับ

Sheet5
  1. ที่ B1 คีย์ 0
  2. ที่ B2 คีย์
    =IF(COUNTIF(C$2:C2,C2)=1,LOOKUP(9.99999999999999E+307,B$1:B1)+1,"")
    Enter > Copy ลงด้านล่าง
Sheet6
  1. ที่ A11 คีย์
    =LOOKUP(9.99999999999999E+307,Sheet5!B:B)
    Enter
  2. ที่ 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 ลงด้านล่าง
arampong
Member
Member
Posts: 31
Joined: Wed Jul 08, 2015 11:46 am

Re: สอบถามเรื่อง Vlookup ครับ

#13

Post 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)
แล้วลากลงมาใช่หรือไม่ครับ


ขอบคุณครับ
You do not have the required permissions to view the files attached to this post.
User avatar
puriwutpokin
Guru
Guru
Posts: 3801
Joined: Fri Jan 04, 2013 9:49 pm
Location: Bangkok
Excel Ver: MS.365

Re: สอบถามเรื่อง Vlookup ครับ

#14

Post 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)
แล้วลากลงมาใช่หรือไม่ครับ
อันนี้ยังใช้เหมือนเดิมครับ ส่วนที่ว่า คีย์มือเองนั้น สูตรของอาจารย์คนควน ก็ยังใช้ได้อยู่ครับ ไม่จำเป็นต้องลบสูตรอาจารย์ทิ้ง
ก็แค่คีย์มือในส่วนที่ต้องการ ใช้ข้อมูลเท่านั้นก็ได้ครับ
:shock: :roll: :D
arampong
Member
Member
Posts: 31
Joined: Wed Jul 08, 2015 11:46 am

Re: สอบถามเรื่อง Vlookup ครับ

#15

Post by arampong »

เรียนอาจารย์ทั้งสองท่านครับ

คือผมพยายามปรับมาใช้งานจริงๆ ตามที่อาจารย์แนะนำ
แต่ก็ติดตรง ค่าของ Sheet DDD ตามตัวอย่างแนบครับ
คือจุดประสงค์ อยากจะพิมพ์แล้ว ถ้าข้อมูลตรงกับตาราง iERP ที่คอลั่ม C แล้วให้เอาค่า N ที่หาไว้ที่เอาที่ต่อๆกันตัวที่มากที่สุด
มาแสดงที่ คอลั่ม D ตามตัวอย่างที่แนบมาครับ

แต่ติดตอนนี้คือ พอใส่สูตร Array ที่ชีท Sheet DDD คอลั่ม B ตามอาจารย์ไว้ พอพิมพ์ตัวเลขไปใหม่สูตรก็หายครับ
ค่าก็ไม่ขึ้นครับ ทุกช่องผมอย่ากอยาก Lock ไว้ครับให้พิมได้เฉพาะ คอลั่ม B ครับ
รบกวนช่วยแนะนำทีครับ ว่าจะทำแบบไหนดีครับ

ขอบคุณครับอาจารย์
You do not have the required permissions to view the files attached to this post.
User avatar
puriwutpokin
Guru
Guru
Posts: 3801
Joined: Fri Jan 04, 2013 9:49 pm
Location: Bangkok
Excel Ver: MS.365

Re: สอบถามเรื่อง Vlookup ครับ

#16

Post 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
:shock: :roll: :D
User avatar
puriwutpokin
Guru
Guru
Posts: 3801
Joined: Fri Jan 04, 2013 9:49 pm
Location: Bangkok
Excel Ver: MS.365

Re: สอบถามเรื่อง Vlookup ครับ

#17

Post 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 ครับ เพื่อให้ข้อมูลถูกต้องครับ
:shock: :roll: :D
arampong
Member
Member
Posts: 31
Joined: Wed Jul 08, 2015 11:46 am

Re: สอบถามเรื่อง Vlookup ครับ

#18

Post by arampong »

ขอบคุณมากครับผม
Post Reply