: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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
boonyanood
Member
Member
Posts: 12
Joined: Sat May 30, 2015 8:51 pm

สอบถามการตัดข้อความ ต้องการเฉพาะชื่อจริง

#1

Post by boonyanood »

สอบถามการตัดข้อความ ต้องการเฉพาะชื่อจริง ไม่เอาช่องว่าง , ตัวเลข , อักขระใดๆ

ตัวอย่างข้อความนะคะ
วงศ์ภัทรM08901909
คุณสุนทรี081446854
ประทีป (ฝ่ายรับประกัน)
ศิระ(ฝ่ายรับประกัน)
&22/05/58 คุณดิษฐวัฒน์
วัชระ/03/07/58
&3/6/58/คุณพุฒิพัฒน์
โทรแจ้ง คุณสมพงษ์ 081668537
นิราวัล&08/06/58-59

รบกวนขอคำแนะนำจากสมาชิกทุกท่าน
ขอบคุณค่ะ
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

Re: สอบถามการตัดข้อความ ต้องการเฉพาะชื่อจริง

#2

Post by bank9597 »

หากใช้สูตรคงต้องเขียนสูตรยาวครับ รบกวนท่านที่เก่งมาช่วยดู

แต่ถ้าใช้ vba ก็จะทำได้ง่ายมาก แต่ต้องเขียนมาเองก่อน ซึ่งเป็นไปตามกฏครับ
Forum Rules
  1. อย่าใช้ภาษาแชทในการตอบ-ถาม
  2. ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
  3. ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
  4. ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
  5. หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
  6. แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
User avatar
DhitiBank
Gold
Gold
Posts: 1676
Joined: Mon Oct 15, 2012 12:07 am

Re: สอบถามการตัดข้อความ ต้องการเฉพาะชื่อจริง

#3

Post by DhitiBank »

ยากจริง รูปแบบตำแหน่งของชื่อไม่แน่นอน
สูตร ผมไม่ไหว VBA ผมนึกไม่ออก ปูเสื่อรอดูคำตอบดีกว่า :tt:
User avatar
snasui
Site Admin
Site Admin
Posts: 31256
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถามการตัดข้อความ ต้องการเฉพาะชื่อจริง

#4

Post by snasui »

:D ตัวอย่างสูตรที่พอช่วยได้ครับ

สมมุติข้อมูลเริ่มที่ A2
  1. เซลล์ B2 คีย์สูตรเพื่อหาลำดับที่ของอักขระที่มี Code น้อยกว่า 161 หมายถึงค่าที่น้อยกว่าตัว ก.ไก่
    =AGGREGATE(15,6,1/(CODE(MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1))<161)*ROW(INDIRECT("1:"&LEN(A2))),1)-1
    Enter > Copy ลงด้านล่าง
  2. เซลล์ C2 คีย์สูตรเพื่อหาลำดับที่ของอักขระที่มี Code มากกว่าหรือเท่ากับ 161 หมายถึงค่าที่มากกว่าหรือเท่ากับตัว ก.ไก่
    =AGGREGATE(15,6,1/(CODE(MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1))>=161)*ROW(INDIRECT("1:"&LEN(A2))),1)
  3. เซลล์ D2 คีย์สูตรเพื่อตัดเฉพาะชื่อ
    =IF(B2>0,LEFT(A2,B2),MID(A2,C2,255))
    Enter > Copy ลงด้านล่าง
  4. Manual Replace ค่าในคอลัมน์ A เช่นคำว่า "โทรแจ้ง " ให้เป็นค่าว่าง สังเกตคอลัมน์ D
เนื่องจากมีความหลากหลายในข้อมูล จึงต้องทำข้อ 4 เพิ่มเติม

สำหรับการเขียนสูตรให้ครอบคลุมจะเสียเวลามาก อาจจะต้องเพิ่มตารางสำหรับ Mapping ว่าค่าใดที่ต้องขจัดออกไป เนื่องจากไม่ได้เป็นส่วนหนึ่งของชื่อ เช่นนี้เป็นต้น
boonyanood
Member
Member
Posts: 12
Joined: Sat May 30, 2015 8:51 pm

Re: สอบถามการตัดข้อความ ต้องการเฉพาะชื่อจริง

#5

Post by boonyanood »

ใช้ excel 2007 อยู่ค่ะ
ไม่มีคำสั่ง AGGREGATE
พอจะมีคำสั่งอื่นไหมคะ
User avatar
snasui
Site Admin
Site Admin
Posts: 31256
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถามการตัดข้อความ ต้องการเฉพาะชื่อจริง

#6

Post by snasui »

:D ปรับสูตรเป็นตามด้านล่างครับ
  1. B2
    =MATCH(1,INDEX(1/(CODE(MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1))<161),0),0)-1
    Enter > Copy ลงด้านล่าง
  2. C2
    =MATCH(1,INDEX(1/(CODE(MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1))>=161),0),0)
    Enter > Copy ลงด้านล่าง
  3. ที่เหลือทำเหมือนเดิม
jelelite
Member
Member
Posts: 40
Joined: Thu Aug 06, 2015 7:37 pm

Re: สอบถามการตัดข้อความ ต้องการเฉพาะชื่อจริง

#7

Post by jelelite »

ตามมาศึกษาสูตรจากอาจารย์ :o


:cp: :thup:
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

Re: สอบถามการตัดข้อความ ต้องการเฉพาะชื่อจริง

#8

Post by bank9597 »

ยากจริง รูปแบบตำแหน่งของชื่อไม่แน่นอน
สูตร ผมไม่ไหว VBA ผมนึกไม่ออก ปูเสื่อรอดูคำตอบดีกว่า
หากใช้ vba เราสามารถทำได้ง่ายด้วยการ Loop เพียงแต่ เราต้องระบุอักขระที่ต้องการจะตัดออกไป และสั่ง Run โค๊ดเป็นรอบๆไป

เราคงระบุอักขระที่ต้องการแบบชัดเจนไม่ได้ แต่เราสามารถตัดคำหลายครั้งได้ด้วยตัวอย่างโค๊ดนี้ครับ

ระบุตัวหนังสือที่ต้องการตัดลงในเซลล์ C1
หากไม่ระบุอักษรใดๆ โค๊ดจะตัดตัวเลขออกทั้งหมด
จากนั้นค่อยๆทยอยตัดตัวอักษรที่เราต้องการ จนกว่าจะได้ผลลัพธ์ตามที่ต้องการครับ

Code: Select all

Option Explicit
Sub Rectangle1_Click()
        Dim strVal As Variant
        strVal = Sheets("Sheet1").Range("C1")
        f_CutText (strVal)
End Sub

Code: Select all

Public Function f_CutText(ByVal strValue As Variant)
        Dim ws As Worksheet
        Dim rRange As Range
        Dim tRange As Range
        Dim i As Integer

        Set ws = Worksheets("Sheet1")

        Set rRange = ws.Range("A2:A" & ws.Range("A" & Rows.Count).End(xlUp).Row)

        For Each tRange In rRange
            If strValue = "" Then
                For i = 0 To 9
                    tRange = Trim(WorksheetFunction.Substitute(tRange, i, ""))
                Next i
            Else
                tRange = Trim(WorksheetFunction.Substitute(tRange, strValue, ""))
            End If
        Next tRange

        Set ws = Nothing
        Set rRange = Nothing

End Function
You do not have the required permissions to view the files attached to this post.
Forum Rules
  1. อย่าใช้ภาษาแชทในการตอบ-ถาม
  2. ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
  3. ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
  4. ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
  5. หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
  6. แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
User avatar
snasui
Site Admin
Site Admin
Posts: 31256
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถามการตัดข้อความ ต้องการเฉพาะชื่อจริง

#9

Post by snasui »

:D เมื่อเขียน Code แล้วควรลดการ Run แบบซ้ำ ๆ ลงได้ อย่างน้อยต้องดีกว่าการ Replace ด้วย Manual ไม่เช่นนั้นไม่คุ้มค่ากับเวลาที่ใช้เขียน Code ครับ
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

Re: สอบถามการตัดข้อความ ต้องการเฉพาะชื่อจริง

#10

Post by bank9597 »

snasui wrote::D เมื่อเขียน Code แล้วควรลดการ Run แบบซ้ำ ๆ ลงได้ อย่างน้อยต้องดีกว่าการ Replace ด้วย Manual ไม่เช่นนั้นไม่คุ้มค่ากับเวลาที่ใช้เขียน Code ครับ
:D จริงอย่างนั้นครับอาจารย์

ถ้าจะลดการ Run ซ้ำ ผมก็ยังคิดได้วิธีเดียวเหมือนคนอื่นๆคือ การระบุอักขระที่ต้องการตัดออกไปให้ครบถ้วนที่สุดครับ
You do not have the required permissions to view the files attached to this post.
Forum Rules
  1. อย่าใช้ภาษาแชทในการตอบ-ถาม
  2. ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
  3. ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
  4. ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
  5. หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
  6. แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
User avatar
DhitiBank
Gold
Gold
Posts: 1676
Joined: Mon Oct 15, 2012 12:07 am

Re: สอบถามการตัดข้อความ ต้องการเฉพาะชื่อจริง

#11

Post by DhitiBank »

:thup: :cp: ขอบคุณทั้งคุณ bank9597 และอาจารย์มากๆ ครับ เป็นประโยชน์ต่อการศึกษามากครับ

ปล. ผมขอเพิ่มสมาชิกใน Array อีกสองตัวนะครับคือ "โทรแจ้ง","ฝ่ายรับประกัน" :) ไม่รู้จะได้หรือเปล่า ผมยังไม่มีคอมให้ลอง เปิดไฟล์ดูได้เฉยๆ แต่ทำอะไรไม่ได้
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

Re: สอบถามการตัดข้อความ ต้องการเฉพาะชื่อจริง

#12

Post by bank9597 »

DhitiBank wrote::thup: :cp: ขอบคุณทั้งคุณ bank9597 และอาจารย์มากๆ ครับ เป็นประโยชน์ต่อการศึกษามากครับ

ปล. ผมขอเพิ่มสมาชิกใน Array อีกสองตัวนะครับคือ "โทรแจ้ง","ฝ่ายรับประกัน" :) ไม่รู้จะได้หรือเปล่า ผมยังไม่มีคอมให้ลอง เปิดไฟล์ดูได้เฉยๆ แต่ทำอะไรไม่ได้
:mrgreen: ใส่คำเฉพาะที่ต้องการตัดลงใน C1 เลยครับ หรือจะใส่ใน Array ก็ไม่มีปัญหาครับ

อันนี้ที่จริง อาจารย์คนควรมีโค๊ดที่สั้นและกระทัดรัดกว่าของผมน่ะครับ ถ้าอาจารย์จะกรุณา เราคงได้ศึกษาโค๊ดนั้นต่อไปครับ :D
Forum Rules
  1. อย่าใช้ภาษาแชทในการตอบ-ถาม
  2. ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
  3. ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
  4. ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
  5. หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
  6. แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
ZEROV
Member
Member
Posts: 73
Joined: Thu Jun 03, 2010 6:31 pm

Re: สอบถามการตัดข้อความ ต้องการเฉพาะชื่อจริง

#13

Post by ZEROV »

ฟังชันส่งกลับภาษาไทย

Code: Select all

Public Function tLang(xStr As Variant) As String
For i = 1 To Len(xStr)
x = Mid(xStr, i, 1)
If Asc(x) > 160 And Asc(x) < 240 Then tLang = tLang & x
Next i
End Function
ปัญหาที่เหลือก็เขียนการตัด Prefix และ Suffix
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

Re: สอบถามการตัดข้อความ ต้องการเฉพาะชื่อจริง

#14

Post by bank9597 »

ZEROV wrote:ฟังชันส่งกลับภาษาไทย

Code: Select all

Public Function tLang(xStr As Variant) As String
For i = 1 To Len(xStr)
x = Mid(xStr, i, 1)
If Asc(x) > 160 And Asc(x) < 240 Then tLang = tLang & x
Next i
End Function
ปัญหาที่เหลือก็เขียนการตัด Prefix และ Suffix
:thup:
Forum Rules
  1. อย่าใช้ภาษาแชทในการตอบ-ถาม
  2. ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
  3. ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
  4. ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
  5. หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
  6. แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
User avatar
DhitiBank
Gold
Gold
Posts: 1676
Joined: Mon Oct 15, 2012 12:07 am

Re: สอบถามการตัดข้อความ ต้องการเฉพาะชื่อจริง

#15

Post by DhitiBank »

ZEROV wrote:ฟังชันส่งกลับภาษาไทย

Code: Select all

Public Function tLang(xStr As Variant) As String
For i = 1 To Len(xStr)
x = Mid(xStr, i, 1)
If Asc(x) > 160 And Asc(x) < 240 Then tLang = tLang & x
Next i
End Function
ปัญหาที่เหลือก็เขียนการตัด Prefix และ Suffix
:o ขอบคุณครับ
User avatar
DhitiBank
Gold
Gold
Posts: 1676
Joined: Mon Oct 15, 2012 12:07 am

Re: สอบถามการตัดข้อความ ต้องการเฉพาะชื่อจริง

#16

Post by DhitiBank »

snasui wrote::D ปรับสูตรเป็นตามด้านล่างครับ
  1. B2
    =MATCH(1,INDEX(1/(CODE(MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1))<161),0),0)-1
    Enter > Copy ลงด้านล่าง
  2. C2
    =MATCH(1,INDEX(1/(CODE(MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1))>=161),0),0)
    Enter > Copy ลงด้านล่าง
  3. ที่เหลือทำเหมือนเดิม
อาจารย์ครับ ขอสอบถามหน่อยครับ

1. การใช้ MID และ CODE แบบนี้ไม่ต้องกดแบบอาร์เรย์เหรอครับ

2. กรณีนี้ทำไมถึงต้องเอา Index มาช่วยในสูตร Match ด้วยครับ ไม่ต้องมี Index ไม่ได้เหรอครับ

(ตอนนี้ผมไม่มีคอมฯ เลยขออนุญาติถามก่อนครับ)
User avatar
snasui
Site Admin
Site Admin
Posts: 31256
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถามการตัดข้อความ ต้องการเฉพาะชื่อจริง

#17

Post by snasui »

DhitiBank wrote:1. การใช้ MID และ CODE แบบนี้ไม่ต้องกดแบบอาร์เรย์เหรอครับ

2. กรณีนี้ทำไมถึงต้องเอา Index มาช่วยในสูตร Match ด้วยครับ ไม่ต้องมี Index ไม่ได้เหรอครับ
:D ตอบรวมกันทั้งสองข้อนะครับ

Index เป็นตัวช่วยให้ไม่ต้องกดแป้นแบบ Array เนื่องจากมีความเป็น Array แบบธรรมชาติเช่นเดียวกับ Lookup, Sumproduct ฟังก์ชั่นพวกนี้ไม่จำเป็นต้องกดแป้นแบบ Array ยกเว้นซ้อนฟังก์ชั่นเข้าไปหลายชั้นจนฟังก์ชั่นเหล่านี้แข็งแรงไม่พอที่จะคงความเป็น Array จำเป็นต้องกดแป้น Ctrl+Shift+Enter เข้าไปช่วยครับ
User avatar
DhitiBank
Gold
Gold
Posts: 1676
Joined: Mon Oct 15, 2012 12:07 am

Re: สอบถามการตัดข้อความ ต้องการเฉพาะชื่อจริง

#18

Post by DhitiBank »

:o ซับซ้อนแท้ ขอบคุณอาจารย์มากครับ

อ๋อ คราวนี้ก็เข้าใจแล้วว่าเมื่อครู่มีโอกาสใช้ FLOOR กับ MODE แบบอาร์เรย์ซ้อนอยู่ใน SUMPRODUCT ทำไมมันถึงกด Enter แล้วแสดงคำตอบได้ในแอปมือถือ ทั้งๆ ที่มันน่าจะต้องกดแบบอาร์เรย์ ขอบคุณอีกครั้งครับ
Post Reply