: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

รบกวนสอบถามสูตรการตัดคำ

ฟอรัมถาม-ตอบปัญหาการใช้งานสูตรและฟังก์ชัน 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
natthaporn
Member
Member
Posts: 187
Joined: Sun Jul 15, 2012 10:54 pm

รบกวนสอบถามสูตรการตัดคำ

#1

Post by natthaporn »

ดิฉันต้องการตัดคำทางด้านซ้ายโดยใช้ "-" ทางด้ายขวามือสุดเป็นตัวแบ่งการตัดคำดังนี้คะ
AA-BB-1-2 ผลลัพที่ต้องการ = AA-BB-1
AA-BB-1-10 ผลลัพที่ต้องการ = AA-BB-1
CC-DD-10-1 ผลลัพที่ต้องการ = CC-DD-10
CC-DD-10-11 ผลลัพที่ต้องการ = CC-DD-10

ขอบคุณคะ
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: รบกวนสอบถามสูตรการตัดคำ

#2

Post by DhitiBank »

ที่ C5 ลองคีย์แบบนี้ครับ

=LEFT(B5,MATCH(2,1/(MID(B5,ROW(INDIRECT("A1:A"&LEN(B5))),1)="-"))-1)

แล้วกด Ctrl+Shift ค้างไว้ แล้วกด Enter ครับ
กดถูกจะเห็นเครื่องหมายปีกกา { } คร่อมสูตรอยู่
จากนั้นคัดลอกสูตรลงล่างครับ
natthaporn
Member
Member
Posts: 187
Joined: Sun Jul 15, 2012 10:54 pm

Re: รบกวนสอบถามสูตรการตัดคำ

#3

Post by natthaporn »

ได้ผลลัพธ์ตามที่ต้องการแล้วคะ ขอบคุณคุณ DhitiBank มากคะ ดิฉันขอรบกวนคุณ DhitiBank อธิบายความหมายของสูตรนี้เพื่อเป็นความรู้ได้ไหมคะ เพราะดิฉันพยายามใช้สูตรที่มี mid,len,find แต่ก็ยังไม่ได้ผลลัพธ์ตามที่ต้องการคะ
User avatar
DhitiBank
Gold
Gold
Posts: 1676
Joined: Mon Oct 15, 2012 12:07 am

Re: รบกวนสอบถามสูตรการตัดคำ

#4

Post by DhitiBank »

ได้ครับ :)
ขอแบ่งเป็นแบบนี้ครับ
1. LEFT(B5,...(2)...)
2. MATCH(2,...(3)...)-1
3. 1/(MID(B5,ROW(INDIRECT("A1:A"&LEN(B5))),1)="-")

ก่อนอื่น ขอแนะนำการแกะสูตรครับ คือการเอาเม้าส์ลากคลุมสูตรใน formula bar การลากคลุมต้องคลุมให้ครบคือ ชื่อสูตร วงเล็บเปิด แล้วก็วงเล็บปิด เป็นต้น แล้วกด F9 ดูเสร็จแล้วกด ESC ครับ

:arrow: สูตรที่ 1
- คงรู้จักสูตรนี้อยู่แล้วใช่ไหมครับ เห็นคุณ natthaporn บอกว่าใช้อยู่ คือจะตัดข้อความจากทางซ้าย โดยสามารถกำหนดจำนวนอักขระได้ จากสูตรนี้ผมหาจำนวนอักขระที่จะตัดจากสูตรที่ 2 และ 3

:arrow: สูตรที่ 3 (ขออธิบายสูตรนี้ก่อนครับ เพราะสูตรข้อ 2 ต้องเอาค่าจากข้อ 3 ไปใช้)
เริ่มที่ตรงนี้ก่อนครับ
ROW(INDIRECT("A1:A"&LEN(B5)))
คำสั่งนี้เป็นการสร้างลำดับตัวเลขโดยเริ่มจาก 1 จนสุดที่จำนวนอักขระทั้งหมดในเซลล์ B5 ครับ เช่น หาก B5 มี 9 อักขระ ผลจากสูตรนี้ก็จะได้ว่า
ROW(INDIRECT("A1:A"&LEN(B5)))
={1;2;3;4;5;6;7;8;9}
เพื่อเอาไปใช้ต่อในสูตร Mid


MID(B5,ROW(INDIRECT("A1:A"&LEN(B5))),1)="-"
สูตรนี้ใช้เพื่อตัดอักขระใน B5 ออกมาทีละ 1 อักขระครับแล้วจับเอาแต่ละตัวมาเท่ากับ "-" เพื่อดูว่าอยู่ตำแหน่งไหนบ้าง และจากสูตร Row เมื่อครู่นี้ก็จะได้ว่า
=MID(B5,{1;2;3;4;5;6;7;8;9},1)="-"
={"A";"A";"-";"B";"B";"-";"1";"-";"2"}="-"
={FALSE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE;TRUE;FALSE}


1/(MID(B5,ROW(INDIRECT("A1:A"&LEN(B5))),1)="-")
เอาค่า True และ False ไปหาร 1 เพื่อบังคับให้ค่าตรรกะกลายเป็นตัวเลขครับ ผลจากการหารจะทำให้ True=1, False=0
=1/{FALSE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE;TRUE;FALSE}
={#DIV/0!;#DIV/0!;[color=#FF0000]1[/color];#DIV/0!;#DIV/0!;[color=#FF0000]1[/color];#DIV/0!;[color=#FF0000]1[/color];#DIV/0!}
ตำแหน่งไหนที่เป็น 1 ก็แสดงว่าตำแหน่งนั้นคือ "-" ครับ เพื่อเอาไปใช้ต่อในสูตร Match

:arrow: สูตรที่ 2
MATCH(2,{#DIV/0!;#DIV/0!;[color=#FF0000]1[/color];#DIV/0!;#DIV/0!;[color=#FF0000]1[/color];#DIV/0!;[color=#FF0000]1[/color];#DIV/0!})-1
เพื่อเลือกตำแหน่งที่เป็น "-" ทางขวาสุด ก่อนอื่นต้องเข้าใจส่วนประกอบของ Match ก่อนครับ
Match(ค่าที่มองหา,กลุ่มข้อมูลที่ถูกมองหา,[match_type])
- สูตรข้างต้น มองหา 2
- กลุ่มข้อมูลที่ถูกมองหาคือ {#DIV/0!;#DIV/0!;[color=#FF0000]1[/color];#DIV/0!;#DIV/0!;[color=#FF0000]1[/color];#DIV/0!;[color=#FF0000]1[/color];#DIV/0!}
- match type ละเอาไว้ โปรแกรมจะเข้าใจว่าเป็นการหาแบบที่ 1 คือจะมองหาค่าที่มากที่สุดในกลุ่มข้อมูล โดยจะต้องมีค่าน้อยกว่าหรือเท่ากับค่าที่มองหา คือหาค่าที่น้อยกว่าหรือเท่ากับ 2 ครับ แต่ดูแล้วไม่มี สูตรนี้ก็จะคืนค่าเป็นตำแหน่งของเลข 1 ที่อยู่ทางขวาสุด นั่นคือตำแหน่งของ "-" ที่อยู่ทางขวาสุด
- เอาตำแหน่งนี้ไปลบออกด้วย 1 ก็จะได้จำนวนอักขระที่จะต้องถูกตัดด้วยสูตร Left ครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31257
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: รบกวนสอบถามสูตรการตัดคำ

#5

Post by snasui »

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

C5 คีย์

=LEFT(B5,FIND("@",SUBSTITUTE(B5,"-","@",LEN(B5)-LEN(SUBSTITUTE(B5,"-",""))))-1)

Enter > Copy ลงด้านล่าง
User avatar
DhitiBank
Gold
Gold
Posts: 1676
Joined: Mon Oct 15, 2012 12:07 am

Re: รบกวนสอบถามสูตรการตัดคำ

#6

Post by DhitiBank »

snasui wrote: =LEFT(B5,FIND("@",SUBSTITUTE(B5,"-","@",LEN(B5)-LEN(SUBSTITUTE(B5,"-",""))))-1)
:thup: ขอบคุณครับ ไม่เคยใช้ Substitute แบบนี้เลย ขอศึกษาก่อนครับ
natthaporn
Member
Member
Posts: 187
Joined: Sun Jul 15, 2012 10:54 pm

Re: รบกวนสอบถามสูตรการตัดคำ

#7

Post by natthaporn »

ขอขอบคุณทั้ง 2 ท่านมากคะ ที่กรุณาให้ความรู้เพิ่มเติมคะ ดิฉันต้องศึกษาอยู่นานเลยคะ อาจจะยังไม่เข้าทั้งหมดแต่ก็จะพยายามนำไปประยุกต์ใช้
และศึกษาต่อไปคะ
ขอโทษด้วยที่ตอบช้าคะ เพราะดิฉันต้องเดินทางไปทำงานต่างจังหวัดเพิ่งกลับมาคะ
ขอขอบคุณคะ
Post Reply