: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

สูตร Search แล้วต้องการหลายคำตอบ

ฟอรัมถาม-ตอบปัญหาการใช้งานสูตรและฟังก์ชัน 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
Pongpat_s
Member
Member
Posts: 6
Joined: Sat Mar 31, 2018 9:14 am

สูตร Search แล้วต้องการหลายคำตอบ

#1

Post by Pongpat_s »

สวัสดีครับ ผมต้องการ search หาคำที่ต้องการในตาราง database
ถ้าเจอคำใดๆ ที่ประกอบไปด้วยคำที่ค้นหา ก็จะให้ดึงค่ามันออกมา
ผมได้ทำการนับจำนวน คำที่เจอเบื้องต้นแล้วครับ
แต่ผมไม่รู้สูตรที่จะดึงค่า
1) คำใดๆ ที่เจอในประโยค
2) ข้อมูลของ Row, ซ้ายสุดของตาราง ของคำที่เจอ
3) ข้อมูลของ Column, บนสุดของตาราง ของคำที่เจอ
คำตอบที่ต้องการ อยู่ในตารางสีเขียวครับ

ขอบคุณสำหรับคำแนะนำครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31214
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สูตร Search แล้วต้องการหลายคำตอบ

#2

Post by snasui »

:D ตัวอย่างสูตรครับ

J4 คีย์

=IFERROR(INDIRECT(TEXT(AGGREGATE(15,6,(ROW($B$4:$B$8)*10000+COLUMN($B$4:$D$4))/(LEFT($B$4:$D$8,4)=$H4),COLUMNS($J4:J$4)),"r0c0000"),0)&", "&INDEX($A:$A,AGGREGATE(15,6,ROW($B$4:$B$8)/(LEFT($B$4:$D$8,4)=$H4),COLUMNS($J4:J$4)))&", "&INDEX($3:$3,AGGREGATE(15,6,COLUMN($B$4:$D$4)/(LEFT($B$4:$D$8,4)=$H4),COLUMNS($J4:J$4))),"")

Enter > Copy ไปทางขวาและลงด้านล่าง
User avatar
Bo_ry
Gold
Gold
Posts: 1245
Joined: Sun Aug 12, 2018 12:11 am
Excel Ver: MS 365
Contact:

Re: สูตร Search แล้วต้องการหลายคำตอบ

#3

Post by Bo_ry »

อีกแบบ
J4
=IF(COLUMNS($J3:J3)>$I4,"",INDEX($B$4:$D$8&", "&$A$4:$A$8&", "&$B$3:$D$3,MOD(AGGREGATE(15,6,COLUMN($B$4:$D$8)*1000+ROW($B$4:$D$8)/ISNUMBER(SEARCH($H4,$B$4:$D$8)),COLUMNS($J4:J4)),1000)-ROW($A$3),AGGREGATE(15,6,COLUMN($B$4:$D$8)/ISNUMBER(SEARCH($H4,$B$4:$D$8)),COLUMNS($J4:J4))-COLUMN($A$3)))
You do not have the required permissions to view the files attached to this post.
Pongpat_s
Member
Member
Posts: 6
Joined: Sat Mar 31, 2018 9:14 am

Re: สูตร Search แล้วต้องการหลายคำตอบ

#4

Post by Pongpat_s »

snasui wrote: Mon Aug 03, 2020 8:47 am :D ตัวอย่างสูตรครับ

J4 คีย์

=IFERROR(INDIRECT(TEXT(AGGREGATE(15,6,(ROW($B$4:$B$8)*10000+COLUMN($B$4:$D$4))/(LEFT($B$4:$D$8,4)=$H4),COLUMNS($J4:J$4)),"r0c0000"),0)&", "&INDEX($A:$A,AGGREGATE(15,6,ROW($B$4:$B$8)/(LEFT($B$4:$D$8,4)=$H4),COLUMNS($J4:J$4)))&", "&INDEX($3:$3,AGGREGATE(15,6,COLUMN($B$4:$D$4)/(LEFT($B$4:$D$8,4)=$H4),COLUMNS($J4:J$4))),"")

Enter > Copy ไปทางขวาและลงด้านล่าง
ขอบคุณครับ ได้คำตอบเลยครับ :thup: ผมขออนุญาตถามเพิ่มเติมครับ
ส่วนตรงสูตรนี้ครับ ROW($B$4:$B$8)*10000+COLUMN($B$4:$D$4))
ถ้าเฉพาะ ROW($B$4:$B$8) = {4;5;6;7;8} คำถามคือทำไมต้องเอาไปคูณ 10000 แล้วก็บวก {2,3,4} ?
ช่วยอธิบายส่วนนี้ให้ผมหน่อยได้ไหมครับ เผื่อผมจะได้เอาไปศึกษาต่อเพิ่มเติมครับ
Pongpat_s
Member
Member
Posts: 6
Joined: Sat Mar 31, 2018 9:14 am

Re: สูตร Search แล้วต้องการหลายคำตอบ

#5

Post by Pongpat_s »

Bo_ry wrote: Mon Aug 03, 2020 12:31 pm อีกแบบ
J4
=IF(COLUMNS($J3:J3)>$I4,"",INDEX($B$4:$D$8&", "&$A$4:$A$8&", "&$B$3:$D$3,MOD(AGGREGATE(15,6,COLUMN($B$4:$D$8)*1000+ROW($B$4:$D$8)/ISNUMBER(SEARCH($H4,$B$4:$D$8)),COLUMNS($J4:J4)),1000)-ROW($A$3),AGGREGATE(15,6,COLUMN($B$4:$D$8)/ISNUMBER(SEARCH($H4,$B$4:$D$8)),COLUMNS($J4:J4))-COLUMN($A$3)))
ขอบคุณครับ :thup: ขออนุญาตสอบถามเพิ่มเติมครับ
1. สูตร Index ใน argument แรก Index($B$4:$D$8&", "&$A$4:$A$8&", "&$B$3:$D$3
รบกวนช่วยอธิบายการทำงานใน Array นี้หน่อยได้ไหมครับ

ทีนี้เวลาข้อมูลเยอะๆ หลายตาราง ผมก็ต้องตั้ง Name manager 3 ชื่อ ต่อหนึ่งตารางใช่ไหมครับ ? ก็ประกอบไปด้วย
1.1 B4:D8 คือช่วงข้อมูลที่ต้องการ Lookup
1.2 A4:A8 คือช่วงของ name list ในแนว row
1.3 B3:D3 คือช่วง name list ในแนว column

2. จากสูตรที่ดึงข้อมูลของ row number
MOD(AGGREGATE(15,6,COLUMN($B$4:$D$8)*1000+ROW($B$4:$D$8)/ISNUMBER(SEARCH($H4,$B$4:$D$8)),COLUMNS($J4:J4)),1000)-ROW($A$3)
ช่วยอธิบายสูตรนี้ได้ไหมครับ

ขอบคุณล่วงหน้าครับ :cp:
User avatar
snasui
Site Admin
Site Admin
Posts: 31214
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สูตร Search แล้วต้องการหลายคำตอบ

#6

Post by snasui »

Pongpat_s wrote: Mon Aug 03, 2020 4:10 pm
snasui wrote: Mon Aug 03, 2020 8:47 am :D ตัวอย่างสูตรครับ

J4 คีย์

=IFERROR(INDIRECT(TEXT(AGGREGATE(15,6,(ROW($B$4:$B$8)*10000+COLUMN($B$4:$D$4))/(LEFT($B$4:$D$8,4)=$H4),COLUMNS($J4:J$4)),"r0c0000"),0)&", "&INDEX($A:$A,AGGREGATE(15,6,ROW($B$4:$B$8)/(LEFT($B$4:$D$8,4)=$H4),COLUMNS($J4:J$4)))&", "&INDEX($3:$3,AGGREGATE(15,6,COLUMN($B$4:$D$4)/(LEFT($B$4:$D$8,4)=$H4),COLUMNS($J4:J$4))),"")

Enter > Copy ไปทางขวาและลงด้านล่าง
ขอบคุณครับ ได้คำตอบเลยครับ :thup: ผมขออนุญาตถามเพิ่มเติมครับ
ส่วนตรงสูตรนี้ครับ ROW($B$4:$B$8)*10000+COLUMN($B$4:$D$4))
ถ้าเฉพาะ ROW($B$4:$B$8) = {4;5;6;7;8} คำถามคือทำไมต้องเอาไปคูณ 10000 แล้วก็บวก {2,3,4} ?
ช่วยอธิบายส่วนนี้ให้ผมหน่อยได้ไหมครับ เผื่อผมจะได้เอาไปศึกษาต่อเพิ่มเติมครับ
:D การนำไปคูณ 10000 แล้วบวกกับค่าตำแหน่งคอลัมน์เพื่อให้ค่าที่แตกต่างกันในแต่ละเซลล์ที่ตรงกับเงื่อนไข จากนั้นนำค่านี้ไปแปลงด้วยฟังก์ชั่น Indirect ให้กลับมาเป็นตำแหน่งเซลล์อีกทีครับ
User avatar
Bo_ry
Gold
Gold
Posts: 1245
Joined: Sun Aug 12, 2018 12:11 am
Excel Ver: MS 365
Contact:

Re: สูตร Search แล้วต้องการหลายคำตอบ

#7

Post by Bo_ry »

=$B$4:$D$8&", "&$A$4:$A$8&", "&$B$3:$D$3
ได้กรอบแดง
=COLUMN($B$4:$D$8)*1000+ROW($B$4:$D$8)-COLUMN($A$3)*1000-ROW(A3)
ได้กรอบเขียว
=COLUMN($B$4:$D$8)*1000+ROW($B$4:$D$8)-COLUMN($A$3)*1000-ROW(A3)/ISNUMBER(SEARCH($H4,$B$4:$D$8))
กรองมาเฉพาะที่มี A001
ได้กรอบฟ้า
จากกรอบฟ้า ดึงตัวเลขจากน้อยไปมาก
แล้วแยกหลัก 1000 ก็ได้ เลข Column
แล้วแยกหลัก หน่วย ก็ได้ เลข Row
เอาไปใช้กับ Index ดึงค่าจากกรอบแดงมาได้
You do not have the required permissions to view the files attached to this post.
Post Reply