Page 1 of 1

อยากทราบวิธีหาค่าซ้ำแบบ VBA ครับ ขอบคุณครับ

Posted: Sun Sep 15, 2019 8:53 pm
by kaninnutt
สวัสดีครับ ขอความช่วยเหลือเรื่องหาค่าซ้ำครับ

อยากได้ สูตร VBA หาค่าซ้ำเพื่อใช้ในงาน เนื่องด้วยรายชื่อที่ต้องหาค่าซ้ำมีมากกว่า 1แสนรายชื่อ ซึ่งปกติผมใช้วิธีง่ายๆ คือ ใช้สูตร =MATCH และค่อยมาใส่กรองอีกที แต่ระยะหลังๆข้อมูลมีมากขึ้นเรื่อยๆ และทำให้ excel ประมวลผลช้ามากๆ ขึ้น Calculating 4 threads... ค้นหาข้อมูลใน google แนะนำว่าให้ใช้ VBA ซึ่งความรู้ของผมเรื่อง excel น้อยมาก จึงอยากขอความช่วยเหลือจากเพื่อนๆครับ ขอบคุณครับ

Re: อยากทราบวิธีหาค่าซ้ำแบบ VBA ครับ ขอบคุณครับ

Posted: Sun Sep 15, 2019 10:19 pm
by puriwutpokin
ต้องเขียนมาเองเบื้องต้นก่อนครับ ตามกฏบอร์ด ติดตรงไหนมาถามกันในนี้ต่อครับ

Re: อยากทราบวิธีหาค่าซ้ำแบบ VBA ครับ ขอบคุณครับ

Posted: Sun Sep 15, 2019 10:42 pm
by menem
พอจะบอกเป้าหมายของการหาค่าซ้ำได้ไหมครับ ?
เพราะที่ให้มี ฐานข้อมูล กับ ข้อมูลลูกค้า
ซึ่งผมมองไม่ออกว่าต้องการเช็คซ้ำแบบไหน และเพื่ออะไร
เนื่องจากการใช้ VBA จำเป็นต้องเขียนมาเองก่อนตามกฏ
แต่หากยังไม่ทราบรูปแบบความต้องการ แม้จะเขียนมาเอง
ก็อาจจะไม่สามารถช่วยได้ เพราะขาดเป้าหมายน่ะครับ

** หมายเหตุ : หากข้อมูลแต่ละชุด มีการ Sort มาก่อน
อาจสามารถเขียนสูตรให้เร็วขึ้นได้โดยไม่ต้องอาศัย VBA นะครับ **

Re: อยากทราบวิธีหาค่าซ้ำแบบ VBA ครับ ขอบคุณครับ

Posted: Mon Sep 16, 2019 7:22 pm
by kaninnutt
menem wrote: Sun Sep 15, 2019 10:42 pm พอจะบอกเป้าหมายของการหาค่าซ้ำได้ไหมครับ ?
เพราะที่ให้มี ฐานข้อมูล กับ ข้อมูลลูกค้า
ซึ่งผมมองไม่ออกว่าต้องการเช็คซ้ำแบบไหน และเพื่ออะไร
เนื่องจากการใช้ VBA จำเป็นต้องเขียนมาเองก่อนตามกฏ
แต่หากยังไม่ทราบรูปแบบความต้องการ แม้จะเขียนมาเอง
ก็อาจจะไม่สามารถช่วยได้ เพราะขาดเป้าหมายน่ะครับ

** หมายเหตุ : หากข้อมูลแต่ละชุด มีการ Sort มาก่อน
อาจสามารถเขียนสูตรให้เร็วขึ้นได้โดยไม่ต้องอาศัย VBA นะครับ **
ขอบคุณครับ
เป้าหมายของการหาค่าซ้ำตามไฟล์ที่แนบมา คือ
Column A จะเป็นเลขรหัสลูกค้า Blacklist
Column B จะเป็นลูกค้าใหม่ที่เข้ามาสมัคร ซึ่งถ้าเลขรหัสลูกค้ารายใหม่ตรงกับ Column A ก็จะไม่สามารถสมัครได้ครับ
พอเวลาผมจะหาว่าลูกค้าใหม่ใน Column B คนไหนที่ไม่สามารถสมัครได้ ผมก็จะใช้สูตร =MATCH ในช่อง Column C
และก็ copy ยาวลงมาถึงจำนวนทั้งหมดของ Column A ก็จะได้คำตอบออกมาว่า B ซ้ำกับ A ในลำดับที่เท่าไหร่ตามไฟล์ที่แนบครับ

ซึ่งผมใช้สูตรนี้ต่อไปก็ได้ แต่ระยะหลังติดปัญหาตรงที่ข้อมูลมันเป็นหลักแสน พอผมใส่ Filter ใน Column C เพื่อหาผลลัพธ์ทั้งหมด
ทำให้ excel ทำงานช้ามากเป็นหลายสิบกว่านาทีและแฮงค์ จากปกติไม่เกิน 2-3นาที จึงอยากสอบถามว่ามีวิธีการอื่นไหมครับ นอกจากสูตร =MATCH แบบบ้านๆที่ผมใช้ ไม่จำเป็นต้อง VBA ก็ได้ครับ ขอบคุณครับ :) :) :)

Re: อยากทราบวิธีหาค่าซ้ำแบบ VBA ครับ ขอบคุณครับ

Posted: Mon Sep 16, 2019 8:08 pm
by puriwutpokin
ที่ C2=IFERROR(INDEX(A:A,MATCH(B:B,A:A,0)),"") คัดลอกลงครับ

Re: อยากทราบวิธีหาค่าซ้ำแบบ VBA ครับ ขอบคุณครับ

Posted: Mon Sep 16, 2019 10:45 pm
by menem
หากสามารถ Sort ข้อมูลในส่วนของฐานข้อมูล และข้อมูลลูกค้าที่จะนำมาเปรียบเทียบ
ก่อนที่จะค้นหาค่าซ้ำ ผมคิดว่าพอจะสามารถทำให้การคำนวณเร็วขึ้นได้ (แต่ยังไงก็ต้อง
ทดสอบกับข้อมูลจริงที่มีนับแสนรายการก่อนนะครับ)