: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

แบ่งกลุ่มโดยอ้างอิงรหัส

ฟอรัมถาม-ตอบปัญหาการใช้งาน 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
nengba
Member
Member
Posts: 55
Joined: Thu Jan 28, 2010 12:08 pm
Location: Thailand
Excel Ver: 2010
Contact:

แบ่งกลุ่มโดยอ้างอิงรหัส

#1

Post by nengba »

สวัสดีครับ

มีคำถามเรื่องการแบ่งกลุ่มคนโดยอ้างอิงรหัส ซึ่งบางคนมีหลายรหัส และตัวคั่นรหัสแต่ละตัวมีทั้ง Alt+Enter และ CHAR(10) ดังไฟล์แนบ

ถามว่าจะต้องเขียนสูตรอย่างไรครับ ?
You do not have the required permissions to view the files attached to this post.
User avatar
puriwutpokin
Guru
Guru
Posts: 3693
Joined: Fri Jan 04, 2013 9:49 pm
Location: Bangkok
Excel Ver: MS.365

Re: แบ่งกลุ่มโดยอ้างอิงรหัส

#2

Post by puriwutpokin »

ที่ F2=INDEX(A$2:A$16,SMALL(IF(ISNUMBER(SEARCH("X",SUBSTITUTE(SUBSTITUTE(SUBSTITUTE($C$2:$C$16,"Y6","X"),"Y7","X"),"Y8","X"),1)),ROW($A$2:$A$16)-ROW($A$2)+1),ROWS($F$2:$F2))) กด Shift+Ctrl+Enter คัดลอกลงครับ
:shock: :roll: :D
nengba
Member
Member
Posts: 55
Joined: Thu Jan 28, 2010 12:08 pm
Location: Thailand
Excel Ver: 2010
Contact:

Re: แบ่งกลุ่มโดยอ้างอิงรหัส

#3

Post by nengba »

ขอบคุณครับ :thup:
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: แบ่งกลุ่มโดยอ้างอิงรหัส

#4

Post by snasui »

:D แถม Mmult อีกสูตรครับ

เซลล์ F2 คีย์

=IFERROR(INDEX(A$2:A$16,SMALL(IF(MMULT({1,1,1},TRANSPOSE(ISNUMBER(SEARCH({"y6","y7","y8"},$C$2:$C$16))+0))>0,TRANSPOSE(ROW($A$2:$A$16)-ROW($A$2)+1)),ROWS(F$2:F7))),"")

Ctrl+Shift+Enter > Copy ไปด้านขวาและลงด้านล่าง

ตรง {1,1,1} เลข 1 มี 3 ตัว จะต้องไปด้วยกันกับจำนวนค่าที่ต้องการค้นหาคือ {"y6","y7","y8"} หากจำนวนที่ต้องการค้นมีกี่ตัว จำนวนเลข 1 ในชุดแรกก็จะต้องมีจำนวนเท่านั้นครับ
nengba
Member
Member
Posts: 55
Joined: Thu Jan 28, 2010 12:08 pm
Location: Thailand
Excel Ver: 2010
Contact:

Re: แบ่งกลุ่มโดยอ้างอิงรหัส

#5

Post by nengba »

ขอบคุณคุณคนควนครับ... ความรู้ใหม่ครับ
nengba
Member
Member
Posts: 55
Joined: Thu Jan 28, 2010 12:08 pm
Location: Thailand
Excel Ver: 2010
Contact:

Re: แบ่งกลุ่มโดยอ้างอิงรหัส

#6

Post by nengba »

รบกวนถามเพิ่มเติมครับ

จากสูตร F2=IFERROR(INDEX(A$2:A$16,SMALL(IF(MMULT({1,1,1},TRANSPOSE(ISNUMBER(SEARCH({"y6","y7","y8"},$C$2:$C$16))+0))>0,TRANSPOSE(ROW($A$2:$A$16)-ROW($A$2)+1)),ROWS(F$2:F2))),"")

เพื่อความยืดหยุ่นในการเปลี่ยนแปลงรหัส จะปรับสูตรให้รับค่าตัวแปรจากตารางในคอลัมน์ L (ลิ้งค์มาจาก sheet หรือ file อื่น) ได้หรือไม่ครับ ?
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: แบ่งกลุ่มโดยอ้างอิงรหัส

#7

Post by snasui »

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

เซลล์ F2 คีย์

=IFERROR(INDEX(A$2:A$16,SMALL(IF(MMULT(TRANSPOSE(IF($L$1:$L$8<>"",ROW($L$1:$L$8)^0,0)),TRANSPOSE(ISNUMBER(SEARCH(TRANSPOSE($L$1:$L$8),$C$2:$C$16))+0))>0,TRANSPOSE(ROW($A$2:$A$16)-ROW($A$2)+1)),ROWS(F$2:F2))),"")

Ctrl+Shift+Enter > Copy ไปด้านขวาและลงด้านล่าง
nengba
Member
Member
Posts: 55
Joined: Thu Jan 28, 2010 12:08 pm
Location: Thailand
Excel Ver: 2010
Contact:

Re: แบ่งกลุ่มโดยอ้างอิงรหัส

#8

Post by nengba »

ขอบคุณคุณคนควนครับ :thup:

พอจะมีเวลาช่วยอธิบายการทำงานของสูตรได้หรือไม่ครับ หลาย ๆ คำสั่งไม่เคยใช้เลยครับ MMULT ^0,0 .... :?:
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: แบ่งกลุ่มโดยอ้างอิงรหัส

#9

Post by snasui »

:D ดูคำอธิบาย Mmult ที่ Link นี้ครับ viewtopic.php?t=8972
nengba
Member
Member
Posts: 55
Joined: Thu Jan 28, 2010 12:08 pm
Location: Thailand
Excel Ver: 2010
Contact:

Re: แบ่งกลุ่มโดยอ้างอิงรหัส

#10

Post by nengba »

ขอบคุณครับ
nengba
Member
Member
Posts: 55
Joined: Thu Jan 28, 2010 12:08 pm
Location: Thailand
Excel Ver: 2010
Contact:

Re: แบ่งกลุ่มโดยอ้างอิงรหัส

#11

Post by nengba »

เจอปัญหา เวลารหัสมีตัวเลขต่อท้าย เป็น 1 กับ 10 ครับ เช่น Y1 กับ Y10

ตามตัวอย่างในไฟล์แนบครับ
You do not have the required permissions to view the files attached to this post.
User avatar
puriwutpokin
Guru
Guru
Posts: 3693
Joined: Fri Jan 04, 2013 9:49 pm
Location: Bangkok
Excel Ver: MS.365

Re: แบ่งกลุ่มโดยอ้างอิงรหัส

#12

Post by puriwutpokin »

ปรับที่ D2=IFERROR(INDEX(A$2:A$16,SMALL(IF(MMULT({1},TRANSPOSE(ISNUMBER(SEARCH($E$1,IF(NOT(ISNUMBER(SEARCH("Y10",$B$2:$B$16))),$B$2:$B$16)))+0))>0,TRANSPOSE(ROW($A$2:$A$16)-ROW($A$2)+1)),ROWS(D$2:D2))),"") Ctrl+Shift+Enter > Copy ไปด้านขวาและลงด้านล่าง
ที่ K2=IFERROR(INDEX(A$2:A$16,SMALL(IF(MMULT(TRANSPOSE(IF($Q$1<>"",ROW($Q$1)^0,0)),TRANSPOSE(ISNUMBER(SEARCH(TRANSPOSE($Q$1),IF(NOT(ISNUMBER(SEARCH("Y10",$B$2:$B$16))),$B$2:$B$16)))+0))>0,TRANSPOSE(ROW($A$2:$A$16)-ROW($A$2)+1)),ROWS(K$2:K2))),"") Ctrl+Shift+Enter > Copy ไปด้านขวาและลงด้านล่าง
:shock: :roll: :D
nengba
Member
Member
Posts: 55
Joined: Thu Jan 28, 2010 12:08 pm
Location: Thailand
Excel Ver: 2010
Contact:

Re: แบ่งกลุ่มโดยอ้างอิงรหัส

#13

Post by nengba »

ขอบคุณ คุณpuriwutpokin ครับ แต่ยังไม่ตรงกับความต้องการครับ

ต้องขอโทษที่ผมตั้งคำถามไม่ชัดเจน สื่อความหมาย ความต้องการไม่ถูกต้องครับ

ผมได้แก้ไขคำถามใหม่ พร้อมทั้งตัวอย่างตามไฟล์ที่แนบครับ
You do not have the required permissions to view the files attached to this post.
User avatar
puriwutpokin
Guru
Guru
Posts: 3693
Joined: Fri Jan 04, 2013 9:49 pm
Location: Bangkok
Excel Ver: MS.365

Re: แบ่งกลุ่มโดยอ้างอิงรหัส

#14

Post by puriwutpokin »

nengba wrote:ขอบคุณ คุณpuriwutpokin ครับ แต่ยังไม่ตรงกับความต้องการครับ

ต้องขอโทษที่ผมตั้งคำถามไม่ชัดเจน สื่อความหมาย ความต้องการไม่ถูกต้องครับ

ผมได้แก้ไขคำถามใหม่ พร้อมทั้งตัวอย่างตามไฟล์ที่แนบครับ
ตามที่ทดสอบก็ตรงตามที่แสดงคำตอบมานะครับ ดูตามไฟล์แนบครับ
You do not have the required permissions to view the files attached to this post.
:shock: :roll: :D
nengba
Member
Member
Posts: 55
Joined: Thu Jan 28, 2010 12:08 pm
Location: Thailand
Excel Ver: 2010
Contact:

Re: แบ่งกลุ่มโดยอ้างอิงรหัส

#15

Post by nengba »

ขอบคุณครับ

ถ้าเราไม่ต้องอ้างอิงรหัสที่ไม่ต้องการ คือถ้าตามตัวอย่าง ต้องการหา "Y1" ในสูตรไม่ต้องอ้างอิง "Y10" จะได้ไหมครับ ?
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: แบ่งกลุ่มโดยอ้างอิงรหัส

#16

Post by snasui »

:D ตัวอย่างสูตรตามด้านล่างครับ

ที่ E2 คีย์

=IFERROR(INDEX($A$2:$A$12,SMALL(IF(ISNUMBER(SEARCH(", "&$O$1&",",", "&SUBSTITUTE($B$2:$B$12,CHAR(10),", ")&",")),ROW($B$2:$B$12)-ROW($B$2)+1),ROWS(E$2:E2))),"")
Ctrl+Shift+Enter > Copy ลงด้านล่าง

เปลี่ยน $O$1 ในสูตรซึ่งปัจจุบันคือ Y1 เป็นการอ้างอิงเซลล์อื่นใดได้ตามต้องการ
nengba
Member
Member
Posts: 55
Joined: Thu Jan 28, 2010 12:08 pm
Location: Thailand
Excel Ver: 2010
Contact:

Re: แบ่งกลุ่มโดยอ้างอิงรหัส

#17

Post by nengba »

ขอบคุณครับ
Post Reply