Page 1 of 1

เกี่ยวกับการดึงข้อมูลด้วย Keywords

Posted: Wed Mar 30, 2016 2:56 pm
by colinz
รบกวนหน่อยครับ
คือผมต้องการจะให้ใส่คำลงไปแล้วดึงข้อมูลที่มีค่าของคำในประโยคนั้นมาแสดง
ลงมาเป็นแถวครับผม(ในกรณีที่ข้อมูลมีคำ นั้นๆ มากกว่า 1 แถว)


ขอบคุณครับ

Re: เกี่ยวกับการดึงข้อมูลด้วย Keywords

Posted: Wed Mar 30, 2016 4:43 pm
by DhitiBank
ควรแนบไฟล์ตัวอย่างมาด้วยครับ ตามกฎบอร์ดข้อ 4 ด้านบน

หรือลองศึกษาคำถามที่คล้ายๆ กันที่ลิ้งค์ด้านล่างนี้ครับ
viewtopic.php?f=3&t=9878
viewtopic.php?f=3&t=9570

Re: เกี่ยวกับการดึงข้อมูลด้วย Keywords

Posted: Thu Mar 31, 2016 9:54 am
by colinz
ขอบคุณครับผม จากลิงค์ที่คุณ DhitiBank ให้มา
ผมได้นำมาลองใช้แล้วได้ผลอย่างที่ต้องการครับ
แต่รบกวนขอรบกวนอีกนิดหน่อยนะครับ
หาผมต้องการเพิ่มช่องค้นหา คือ ปกติค้นหาจากคำที่เป็นมีอยู่ในชื่อ
โดยที่จะเพิ่มอีกช่องให้ค้นหาจากแผนกโดย โดยที่ช่องหนึ่งกับส่องไม่เกี่ยวข้องกัน

หรือทำให้ ใน 1 ช่อง ค้นหาชื่อหรือแผนกก็ได้ครับ
สูตรตัวที่ใช้ ครับผม
=IFERROR(INDEX($B$2:$B$31,SMALL(IFERROR(IF(FIND($E$2,$B$2:$B$31,1),ROW($B$2:$B$31)-ROW($B$2)+1),""),ROWS($H$5:H5))),"")

ขอบคุณครับ

Re: เกี่ยวกับการดึงข้อมูลด้วย Keywords

Posted: Thu Mar 31, 2016 10:45 am
by XDoll
:) ลองแนบไฟล์ตัวอย่างมาดู ไม่จำเป็นต้องเป็นข้อมูลจริงครับ แต่ให้ยกตัวเอย่างคำตอบที่ต้องการมาให้ครบเงื่อนไขก็พอครับ

Re: เกี่ยวกับการดึงข้อมูลด้วย Keywords

Posted: Thu Mar 31, 2016 11:18 am
by colinz
ผมได้แนบไฟล์มา เป็นไฟล์ตัวอย่างที่ผมทำไว้
พร้อมกับคำอธิบายความต้องครับ


รบกวนด้วยนะครับ
ขอบคุณครับผม

Re: เกี่ยวกับการดึงข้อมูลด้วย Keywords

Posted: Thu Mar 31, 2016 12:14 pm
by DhitiBank
ลองแบบนี้ครับ สมมติว่าเซลล์ B2 เพียงเซลล์เดียวไว้พิมพ์ keyword

B5

=IFERROR(INDEX(G$2:G$8,SMALL(IF(MMULT(--ISNUMBER(SEARCH($B$2,$G$2:$H$8)),TRANSPOSE(COLUMN($G$2:$H$2)^0)),ROW($G$2:$G$8)-ROW($G$2)+1),ROWS(B$5:B5))),"")

กด ctrl+shift ค้างไว้ แล้ว enter ~> คัดลอกไป H5 ~> คัดลอกลงล่างครับ

ปล. คีย์ชื่อ หรือ แผนก อย่างใดอย่างหนึ่งครับ หากต้องการหาทั้งชื่อและแผนกพร้อมกัน ผมคิดว่าแยกเซลล์ที่พิมพ์คีย์เวิร์ดน่าจะเขียนสูตรสะดวกกว่า

Re: เกี่ยวกับการดึงข้อมูลด้วย Keywords

Posted: Thu Mar 31, 2016 1:23 pm
by colinz
ขอบคุณพระมาคุณมากครับ ท่าน DhitiBank

ปล. 1. ถ้าหากต้องการหาพร้อมกัน การพิมพ์ทั้งชื่อแหละแผนก ต้องใส่ เป็นประโยค เป๊ะๆ เลยใช่ไหมครับ
2. สูตรสามารถใช้งานได้ครับ แต่ว่าถ้าเราไม่ได้พิมอะไร มันขึ้นรายชื่อมาหมดเลย อยากให้เป็นแบบ ถ้าไม่พิมอะไรก็ไมมีอะไรขึ้นมาครับ

Re: เกี่ยวกับการดึงข้อมูลด้วย Keywords

Posted: Thu Mar 31, 2016 3:52 pm
by DhitiBank
colinz wrote:1. ถ้าหากต้องการหาพร้อมกัน การพิมพ์ทั้งชื่อแหละแผนก ต้องใส่ เป็นประโยค เป๊ะๆ เลยใช่ไหมครับ
2. สูตรสามารถใช้งานได้ครับ แต่ว่าถ้าเราไม่ได้พิมอะไร มันขึ้นรายชื่อมาหมดเลย อยากให้เป็นแบบ ถ้าไม่พิมอะไรก็ไมมีอะไรขึ้นมาครับ
1. การพิมพ์ทั้งชื่อและแผนกในเซลล์ B2 จะไม่สามารถหาข้อมูลเจอได้ครับ เพราะสูตรจะเอาคำที่คีย์ใน B2 ไปมองหาในฐานข้อมูลแต่ละเซลล์ ซึ่งไม่มีเซลล์ไหนในฐานข้อมูลที่มีทั้งชื่อและแผนกอยู่ในเซลล์เดียวกัน ดังนั้น หากต้องการค้นหาจากทั้ง 2 เกณฑ์พร้อมๆ กัน คงต้องแยกเซลล์ที่พิมพ์ key word น่าจะทำให้เขียนสูตรได้สะดวกกว่าครับ เช่น
สมมติที่ B2 ไว้คีย์ชื่ออย่างเดียว, B3 ไว้คีย์แผนกอย่างเดียว (ไม่จำเป็นต้องคีย์เต็มคำ)

B5 คีย์

=IF(AND($B$2="",$B$3=""),"",IFERROR(INDEX(G$2:G$8,SMALL(IF(IF($B$2="",1,ISNUMBER(SEARCH($B$2,$G$2:$G$8)))*IF($B$3="",1,ISNUMBER(SEARCH($B$3,$H$2:$H$8))),ROW($G$2:$G$8)-ROW($G$2)+1),ROWS(B$5:B5))),""))
กด Ctrl+Shift ค้างไว้ ตามด้วย Enter ~> คัดลอกไป C5 ~> คัดลอกลงล่างครับ


2. ปรับสูตรเป็นด้านล่างครับ

=IF($B$2="","",IFERROR(INDEX(G$2:G$8,SMALL(IF(MMULT(--ISNUMBER(SEARCH($B$2,$G$2:$H$8)),TRANSPOSE(COLUMN($G$2:$H$2)^0)),ROW($G$2:$G$8)-ROW($G$2)+1),ROWS(B$5:B5))),""))

Re: เกี่ยวกับการดึงข้อมูลด้วย Keywords

Posted: Fri Apr 01, 2016 3:25 pm
by colinz
ผมได้นำไปใช้แล้ว ทดสอบ ผลได้ตรงตามความต้องการครับ
แต่เวลาประมาณผลค่อนข้างจะนานครับ (ประมาณ 30 - 40 วิ)
ผมคัดลอกสูตรประมาณ 15 บรรทัด และข้อมูลมีประมาณ 200 กว่าแถว ^^"


ขอบคุณครับผม

Re: เกี่ยวกับการดึงข้อมูลด้วย Keywords

Posted: Fri Apr 01, 2016 5:00 pm
by DhitiBank
โห... นานจริง ไม่ทราบว่าใช้ตามวิธีที่ 1 หรือ 2 ครับ ผมจะลองปรับแบบไม่ใช้สูตรอาร์เรย์ให้

สูตรอาร์เรย์จะต้องใช้การคำนวณมากครับ และหากไฟล์มีสูตรมากอยู่แล้วก็จะยิ่งช้า (สเปคของเครื่องคอมฯ ก็เกี่ยวด้วย)

Re: เกี่ยวกับการดึงข้อมูลด้วย Keywords

Posted: Tue Apr 05, 2016 8:28 am
by colinz
ผมทดลองใช้ทั้งสองวิธีเลยครับ
ให้ผลค่อนข้างใกล้เคียงกัน

ส่วนตัวผมเข้าใจว่า เพราะมันใช้วิธีค้นหาตัวอักษรในประโยค
ไม่ใช่การค้นหาเป็นประโยคที่เป๊ะๆเลย ทำให้มันประมวลผล
นานหรือเปล่าครับ?
สเปคคอมผม
CPU Intel core i5
RAM 4 GB
OS Win 7

Re: เกี่ยวกับการดึงข้อมูลด้วย Keywords

Posted: Tue Apr 05, 2016 10:03 am
by logic
ลองดูว่าเร็วขึ้นไหมครับ :)

ฺB5 =IFERROR(INDEX(G$2:G$8,SMALL(IF(MMULT(--ISNUMBER(SEARCH(TRANSPOSE(IF($B$2:$B$3<>"",$B$2:$B$3)),$G$2:$H$8)),ROW($B$2:$B$3)^0),ROW($G$2:$G$8)-ROW($G$2)+1),ROWS(B$5:B5))),"")

ctrl+shift+enter ~~> คัดลอกไปด้านขวาและด้านล่าง

ดัดแปลงสูตรจากคำตอบอาจารย์ที่นี่ครับ http://www.snasui.com/viewtopic.php?f=3&t=9919

Re: เกี่ยวกับการดึงข้อมูลด้วย Keywords

Posted: Tue Apr 05, 2016 12:24 pm
by DhitiBank
แล้วก็นี่เป็นการใช้คอลัมน์ช่วยครับ เผื่อเป็นทางเลือก
ผมลองสมมติให้มีชื่อพนักงานประมาณ 200 กว่าๆ รายชื่อ ลองดูสูตรในคอลัมน์ I, J, K ซึ่งเป็นคอลัมน์ช่วย และสูตรในคอลัมน์ B, C เพื่อดึงข้อมูลมาแสดงครับ