: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

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

ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
colinz
Member
Member
Posts: 22
Joined: Thu Mar 26, 2015 11:39 am

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

#1

Post by colinz »

รบกวนหน่อยครับ
คือผมต้องการจะให้ใส่คำลงไปแล้วดึงข้อมูลที่มีค่าของคำในประโยคนั้นมาแสดง
ลงมาเป็นแถวครับผม(ในกรณีที่ข้อมูลมีคำ นั้นๆ มากกว่า 1 แถว)


ขอบคุณครับ
User avatar
DhitiBank
Gold
Gold
Posts: 1676
Joined: Mon Oct 15, 2012 12:07 am

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

#2

Post by DhitiBank »

ควรแนบไฟล์ตัวอย่างมาด้วยครับ ตามกฎบอร์ดข้อ 4 ด้านบน

หรือลองศึกษาคำถามที่คล้ายๆ กันที่ลิ้งค์ด้านล่างนี้ครับ
viewtopic.php?f=3&t=9878
viewtopic.php?f=3&t=9570
colinz
Member
Member
Posts: 22
Joined: Thu Mar 26, 2015 11:39 am

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

#3

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

ขอบคุณครับ
User avatar
XDoll
Bronze
Bronze
Posts: 261
Joined: Sun Mar 03, 2013 9:23 pm

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

#4

Post by XDoll »

:) ลองแนบไฟล์ตัวอย่างมาดู ไม่จำเป็นต้องเป็นข้อมูลจริงครับ แต่ให้ยกตัวเอย่างคำตอบที่ต้องการมาให้ครบเงื่อนไขก็พอครับ
colinz
Member
Member
Posts: 22
Joined: Thu Mar 26, 2015 11:39 am

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

#5

Post by colinz »

ผมได้แนบไฟล์มา เป็นไฟล์ตัวอย่างที่ผมทำไว้
พร้อมกับคำอธิบายความต้องครับ


รบกวนด้วยนะครับ
ขอบคุณครับผม
You do not have the required permissions to view the files attached to this post.
User avatar
DhitiBank
Gold
Gold
Posts: 1676
Joined: Mon Oct 15, 2012 12:07 am

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

#6

Post 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 ~> คัดลอกลงล่างครับ

ปล. คีย์ชื่อ หรือ แผนก อย่างใดอย่างหนึ่งครับ หากต้องการหาทั้งชื่อและแผนกพร้อมกัน ผมคิดว่าแยกเซลล์ที่พิมพ์คีย์เวิร์ดน่าจะเขียนสูตรสะดวกกว่า
colinz
Member
Member
Posts: 22
Joined: Thu Mar 26, 2015 11:39 am

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

#7

Post by colinz »

ขอบคุณพระมาคุณมากครับ ท่าน DhitiBank

ปล. 1. ถ้าหากต้องการหาพร้อมกัน การพิมพ์ทั้งชื่อแหละแผนก ต้องใส่ เป็นประโยค เป๊ะๆ เลยใช่ไหมครับ
2. สูตรสามารถใช้งานได้ครับ แต่ว่าถ้าเราไม่ได้พิมอะไร มันขึ้นรายชื่อมาหมดเลย อยากให้เป็นแบบ ถ้าไม่พิมอะไรก็ไมมีอะไรขึ้นมาครับ
User avatar
DhitiBank
Gold
Gold
Posts: 1676
Joined: Mon Oct 15, 2012 12:07 am

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

#8

Post 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))),""))
colinz
Member
Member
Posts: 22
Joined: Thu Mar 26, 2015 11:39 am

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

#9

Post by colinz »

ผมได้นำไปใช้แล้ว ทดสอบ ผลได้ตรงตามความต้องการครับ
แต่เวลาประมาณผลค่อนข้างจะนานครับ (ประมาณ 30 - 40 วิ)
ผมคัดลอกสูตรประมาณ 15 บรรทัด และข้อมูลมีประมาณ 200 กว่าแถว ^^"


ขอบคุณครับผม
User avatar
DhitiBank
Gold
Gold
Posts: 1676
Joined: Mon Oct 15, 2012 12:07 am

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

#10

Post by DhitiBank »

โห... นานจริง ไม่ทราบว่าใช้ตามวิธีที่ 1 หรือ 2 ครับ ผมจะลองปรับแบบไม่ใช้สูตรอาร์เรย์ให้

สูตรอาร์เรย์จะต้องใช้การคำนวณมากครับ และหากไฟล์มีสูตรมากอยู่แล้วก็จะยิ่งช้า (สเปคของเครื่องคอมฯ ก็เกี่ยวด้วย)
colinz
Member
Member
Posts: 22
Joined: Thu Mar 26, 2015 11:39 am

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

#11

Post by colinz »

ผมทดลองใช้ทั้งสองวิธีเลยครับ
ให้ผลค่อนข้างใกล้เคียงกัน

ส่วนตัวผมเข้าใจว่า เพราะมันใช้วิธีค้นหาตัวอักษรในประโยค
ไม่ใช่การค้นหาเป็นประโยคที่เป๊ะๆเลย ทำให้มันประมวลผล
นานหรือเปล่าครับ?
สเปคคอมผม
CPU Intel core i5
RAM 4 GB
OS Win 7
User avatar
logic
Gold
Gold
Posts: 1506
Joined: Thu Mar 18, 2010 1:57 pm
Excel Ver: 365

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

#12

Post 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
User avatar
DhitiBank
Gold
Gold
Posts: 1676
Joined: Mon Oct 15, 2012 12:07 am

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

#13

Post by DhitiBank »

แล้วก็นี่เป็นการใช้คอลัมน์ช่วยครับ เผื่อเป็นทางเลือก
ผมลองสมมติให้มีชื่อพนักงานประมาณ 200 กว่าๆ รายชื่อ ลองดูสูตรในคอลัมน์ I, J, K ซึ่งเป็นคอลัมน์ช่วย และสูตรในคอลัมน์ B, C เพื่อดึงข้อมูลมาแสดงครับ
You do not have the required permissions to view the files attached to this post.
Post Reply