Page 1 of 1

อยากทราบว่าพอจะมีวิธีทำรึเปล่าครับ

Posted: Wed Feb 20, 2013 2:17 pm
by jojokabbpom
คือผมมีเอกสารอยู่ 2 Sheet โดยที่ในชีทแรกจะมีข้อความลักษณะดังนี้

ชื่นชม(MHR6542) - ห้วยเม็ก(MHR6525)

ส่วนอีกชีทหนึ่ง จะมีข้อความดังนี้

MHR6542 - MHR6525


พอจะมีวิธีไหนบ้างครับ ที่เราจะสามารถนับจำนวน Cell ที่ซ้ำกันโดยที่ทั้ง 2 Sheet ข้อมูลต่างกันดังที่ยกตัวอย่างมา
โดยส่วนที่จะใช้ในการค้นหาข้อมูลที่ซ้ำกัน จะมีแค่ส่วนที่เป็น Code คือ MHR6542 และ MHR6525 จากตัวอย่างที่ให้มาน่ะครับ

แนวความคิดของผม ผมคิดว่าน่าจะมีวิธีค้นหาคำบางคำในเซลนั้นๆ มา Match กับข้อมูลของอีก Sheet นึงน่ะครับ ไม่แน่ใจว่ามีวิธีแบบนี้รึเปล่า

Re: อยากทราบว่าพอจะมีวิธีทำรึเปล่าครับ

Posted: Wed Feb 20, 2013 3:16 pm
by snasui
:D ช่วยแสดงตัวอย่างคำตอบที่ต้องการมาด้วยครับ จะได้เข้าใจตรงกันว่าต้องการคำตอบอยู่ที่ชีทไหน เซลล์ไหน ค่าเท่าใด

Re: อยากทราบว่าพอจะมีวิธีทำรึเปล่าครับ

Posted: Thu Feb 21, 2013 12:18 am
by jojokabbpom
ขอโทษด้วยครับ อธิบายไม่ละเอียด
ยกตัวอย่างไฟล์ที่แนบมานะครับ
ผมต้องการจับคู่ข้อมูลจาก Sheet 1 และ Sheet 2
โดยที่ข้อมูลมีแค่ข้อความบางส่วนในเซลที่เหมือนกัน ในที่นี่จะใช้ Code ID ใน Sheet 2 เป็นตัวหาน่ะครับ
ยกตัวอย่างเช่น ในบรรทัดแรก ใน Sheet 1 ที่ Column A4 คือ

วัดห้วยถั่วเหนือ(NKW6556) - จุดตัดต่อHw.225กม.25+705.0 (NKW6531/BJ01)PROVINCE:NAKHON SAWAN

โดยจะให้หา Code ID (ตัวสีฟ้า) มาจับคู่กับข้อมูลใน Sheet 2 และเอาข้อมูลใน Sheet 2 มาแสดงในช่อง B1 น่ะครับ
ตามตัวอย่างในแถวแรกของ Sheet 1 ครับ
พอจะมีวิธีรึเปล่าครับ

Re: อยากทราบว่าพอจะมีวิธีทำรึเปล่าครับ

Posted: Thu Feb 21, 2013 7:11 am
by snasui
:D ไม่มี Sheet2 ตามไฟล์ที่แนบมาล่าสุดครับ

Re: อยากทราบว่าพอจะมีวิธีทำรึเปล่าครับ

Posted: Thu Feb 21, 2013 11:11 am
by jojokabbpom
ขอโทษทีครับ ส่งผิดไฟล์ครับ

Re: อยากทราบว่าพอจะมีวิธีทำรึเปล่าครับ

Posted: Thu Feb 21, 2013 7:07 pm
by snasui
:D ลองตามนี้ครับ

ที่เซลล์ B2 คีย์

=INDEX(Sheet2!$A$4:$A$485,MATCH(1,IF(ISNUMBER(SEARCH(LEFT(Sheet2!$A$4:$A$485,FIND(" - ",Sheet2!$A$4:$A$485)-1),A4)),IF(ISNUMBER(SEARCH(MID(Sheet2!$A$4:$A$485,FIND(" - ",Sheet2!$A$4:$A$485)+3,255),A4)),1))))

Ctrl+Shift+Enter > Copy ลงด้านล่าง

!
Note: Ctrl+Shift+Enter หมายถึงเมื่อคีย์สูตรแล้ว แทนที่จะกด Enter ให้กดแป้น Ctrl+Shift ค้างไว้แล้วกด Enter เพื่อสร้างเป็นสูตร Array หากกดแป้นถูกต้องสูตรนั้นจะมีเครื่องหมายปีกกาครอบ เช่น {=YourFormulas(...)} ปีกกานี้คีย์เข้าไปเองไม่ได้ ถ้ายังไม่เห็นปีกกาครอบสูตรแสดงว่ากดแป้นให้รับสูตรไม่ถูกต้อง

Re: อยากทราบว่าพอจะมีวิธีทำรึเปล่าครับ

Posted: Thu Feb 21, 2013 8:45 pm
by jojokabbpom
ได้แล้วครับ ขอบคุณครับ
ว่าแต่พอจะอธิบายสูตรหน่อยได้รึเปล่าครับ
เพราะบางทีผมต้องเอาไปใช้กับตารางอื่นๆด้วยครับ
ขอบคุณอีกครั้งครับ

Re: อยากทราบว่าพอจะมีวิธีทำรึเปล่าครับ

Posted: Thu Feb 21, 2013 9:11 pm
by tahc
excelForum.jpg
ผมแวะมาเยี่ยม(ตามปกติ) เห็นว่ามีประโยชน์ ลองดาวน์โหลดไปใช้ดู ปรากฏว่ามีบางเซลไม่แสดงค่า ไม่ทราบเป็นอะไร (ใช้วิธี Copy สูตรลงล่างครับ)แก้ไขอย่างไรครับ

Re: อยากทราบว่าพอจะมีวิธีทำรึเปล่าครับ

Posted: Thu Feb 21, 2013 9:41 pm
by snasui
jojokabbpom wrote:ได้แล้วครับ ขอบคุณครับ
ว่าแต่พอจะอธิบายสูตรหน่อยได้รึเปล่าครับ
เพราะบางทีผมต้องเอาไปใช้กับตารางอื่นๆด้วยครับ
ขอบคุณอีกครั้งครับ
:D จากสูตร =INDEX(Sheet2!$A$4:$A$485,MATCH(1,IF(ISNUMBER(SEARCH(LEFT(Sheet2!$A$4:$A$485,FIND(" - ",Sheet2!$A$4:$A$485)-1),A4)),IF(ISNUMBER(SEARCH(MID(Sheet2!$A$4:$A$485,FIND(" - ",Sheet2!$A$4:$A$485)+3,255),A4)),1)))) หมายความว่าในช่วงของ Sheet2!$A$4:$A$485 ให้นำลำดับที่ได้จากผลลัพธ์ของสูตร MATCH(1,IF(ISNUMBER(SEARCH(LEFT(Sheet2!$A$4:$A$485,FIND(" - ",Sheet2!$A$4:$A$485)-1),A4)),IF(ISNUMBER(SEARCH(MID(Sheet2!$A$4:$A$485,FIND(" - ",Sheet2!$A$4:$A$485)+3,255),A4)),1))) มาแสดง

จากสูตร MATCH(1,IF(ISNUMBER(SEARCH(LEFT(Sheet2!$A$4:$A$485,FIND(" - ",Sheet2!$A$4:$A$485)-1),A4)),IF(ISNUMBER(SEARCH(MID(Sheet2!$A$4:$A$485,FIND(" - ",Sheet2!$A$4:$A$485)+3,255),A4)),1))) หมายถึง ให้หาว่า เลข 1 อยู่ในลำดับที่เท่าไรของผลลัพธ์ที่ได้จากสูตร IF(ISNUMBER(SEARCH(LEFT(Sheet2!$A$4:$A$485,FIND(" - ",Sheet2!$A$4:$A$485)-1),A4)),IF(ISNUMBER(SEARCH(MID(Sheet2!$A$4:$A$485,FIND(" - ",Sheet2!$A$4:$A$485)+3,255),A4)),1))

จากสูตร IF(ISNUMBER(SEARCH(LEFT(Sheet2!$A$4:$A$485,FIND(" - ",Sheet2!$A$4:$A$485)-1),A4)),IF(ISNUMBER(SEARCH(MID(Sheet2!$A$4:$A$485,FIND(" - ",Sheet2!$A$4:$A$485)+3,255),A4)),1)) หมายความว่า หาก ISNUMBER(SEARCH(LEFT(Sheet2!$A$4:$A$485,FIND(" - ",Sheet2!$A$4:$A$485)-1),A4)) เป็นจริงแล้วให้แสดงผลลัพธ์ของ IF(ISNUMBER(SEARCH(MID(Sheet2!$A$4:$A$485,FIND(" - ",Sheet2!$A$4:$A$485)+3,255),A4)),1)

จากสูตร IF(ISNUMBER(SEARCH(MID(Sheet2!$A$4:$A$485,FIND(" - ",Sheet2!$A$4:$A$485)+3,255),A4)),1) หมายความว่าหาก ISNUMBER(SEARCH(MID(Sheet2!$A$4:$A$485,FIND(" - ",Sheet2!$A$4:$A$485)+3,255),A4)) เป็นจริงแล้วให้แสดงค่า 1

สูตรพวกนี้เป็นสูตร Array เข้าใจยากมากสำหรับมือใหม่ครับ :mrgreen:

Re: อยากทราบว่าพอจะมีวิธีทำรึเปล่าครับ

Posted: Thu Feb 21, 2013 9:42 pm
by snasui
tahc wrote:
excelForum.jpg
ผมแวะมาเยี่ยม(ตามปกติ) เห็นว่ามีประโยชน์ ลองดาวน์โหลดไปใช้ดู ปรากฏว่ามีบางเซลไม่แสดงค่า ไม่ทราบเป็นอะไร (ใช้วิธี Copy สูตรลงล่างครับ)แก้ไขอย่างไรครับ
:D เกิดจากค่าไม่ตรงกันเช่น มีวรรค หรือ ไม่มีพร้อมกันทั้งสองค่าที่ตรวจสอบก็จะติด Error #N/A ครับ

Re: อยากทราบว่าพอจะมีวิธีทำรึเปล่าครับ

Posted: Thu Feb 21, 2013 11:25 pm
by jojokabbpom
ขอบคุณครับ จะลองศึกษาดูไว้เป็นแนวทางครับ

Re: อยากทราบว่าพอจะมีวิธีทำรึเปล่าครับ

Posted: Thu Feb 21, 2013 11:51 pm
by lotto009
เรียนอาจาร์ยครับ
จากสูตรด้านบน สำหรับมือใหม่อย่างพวกผมมันค่อนข้างยากอยู่ ผมเคยใช้สูตรยากๆแล้วเอามาใส่ใน VBA เอง (โดยบันทึก copyคนอื่นมาบ้าง) หากข้อมูลมันเยอะ มันจะทำให้ช้าน่ะครับ พอจะสามารถให้คำสังใน VBAเช่น Select case หรือว่า If มันจะเร็วขึ้นใหมครับ อาจาร์ยช่วยเขียนเทียบเคียงด้านบนได้ใหมครับ เนื้องานของผมคล้ายๆกับ คุณjojokabbpom นะครับ
ขอบพระคุณครับ
อาร์ต

Re: อยากทราบว่าพอจะมีวิธีทำรึเปล่าครับ

Posted: Thu Feb 21, 2013 11:55 pm
by snasui
:D สำหรับ VBA จำเป็นต้องเขียนกันมาเองครับ ติดตรงไหนแล้วค่อยถามกันตามกฎข้อ 5 ด้านบนครับ :roll:

Re: อยากทราบว่าพอจะมีวิธีทำรึเปล่าครับ

Posted: Fri Feb 22, 2013 12:24 am
by lotto009
เรียนอาจาร์ยครับ
ผมบันทึกใช้macroน่ะครับ โดยใช้สูตรของอาจาร์ยมาทำ ช่วยเพิ่มเติมด้วย
ตอนนี้ผมกำลังหัดเรียนรู้ VBAอยู่
ขอบคุณมากครับ
อาร์ต

Re: อยากทราบว่าพอจะมีวิธีทำรึเปล่าครับ

Posted: Fri Feb 22, 2013 7:03 am
by snasui
:D Macro ที่บันทึกมาแล้วติดปัญหาใดครับ :?:

Re: อยากทราบว่าพอจะมีวิธีทำรึเปล่าครับ

Posted: Fri Feb 22, 2013 7:58 pm
by lotto009
เรียนอาจาร์ยครับ
ไม่มีติดครับ ผมใช้วิธีบันทึกเอา แต่ผมอยากจะทำแบบ ไม่ใช่บันทึกน่ะครับ อยากจะใช้select cause หรือ if แทนสูตรด้านบน
เพื่อเทียบผลกัน ผมต้องขอไปศึกษามาล่วงหน้าก่อนค่อยมาถาม ท้ายนี้ขอขอบพระคุณอาจาร์ยมากนะครับ
เคารพครับ
อาร์ต