Page 1 of 1
อยากได้สูตรแยก คำนำหน้า ชื่อ และนามสกุล
Posted: Fri Sep 20, 2019 9:21 am
by SuminO
อยากได้สูตรแยก คำนำหน้า ชื่อ และนามสกุล
ผมลองได้แต่แยกเมื่อเจอช่องว่า แต่แยกคำหน้าไม่ได้
เช่น นายวิชัย เรียนเก่ง ผบลที่ต้องการแบ่งตามช่องครับ
นาย วิชัย เรียนเก่ง
=MID(B1,SEARCH(" ",B1,1)+1,SEARCH(" ",B1,SEARCH(" ",B1,1)))
Re: อยากได้สูตรแยก คำนำหน้า ชื่อ และนามสกุล
Posted: Fri Sep 20, 2019 11:05 am
by Bo_ry
ถ้ามีแค่ นายกับนางสาว
C1
=IF(LEFT(B1,3)="นาย","นาย","นางสาว")
D1
=MID(LEFT(B1,FIND(" ",B1)),LEN(C1)+1,20)
E1
=MID(B1,FIND(" ",B1)+1,20)
ถ้ามีหลายแบบ ดูตาม link
https://www.facebook.com/XcWizard/posts ... 4302029665
Re: อยากได้สูตรแยก คำนำหน้า ชื่อ และนามสกุล
Posted: Fri Sep 20, 2019 12:45 pm
by SuminO
Function getTitle(thisFullName As String) As String
Dim Titles As Variant
Dim myCount As Integer
' สร้างตัวแปร Array ชื่อ Titles เพื่อเก็บคำนำหน้าชื่อ สามารถเพิ่มได้อีกไม่จำกัด
' ต้องให้ นางสาว มาก่อน นาง มิฉะนั้นจะตรวจสอบนางสาวไม่ได้
Titles = Array("นาย", "นางสาว", "นาง", "เด็กชาย", "ด.ช.", "ว่าที่ ร.ต.")
For myCount = 0 To UBound(Titles)
getTitle = Left(thisFullName, Len(Titles(myCount)))
If Titles(myCount) = getTitle Then
Exit Function
Else
getTitle = blank
End If
Next myCount
End Function
Function getFirstName(thisFullName As String) As String
Dim thisTitle As String
Dim firstName As String
Dim spacePos As Integer
thisTitle = getTitle(thisFullName)
spacePos = InStr(thisFullName, " ")
If spacePos = 0 Then 'ถ้าไม่มีช่องว่าง
firstName = Trim(Mid(thisFullName, Len(thisTitle) + 1, Len(thisFullName) - Len(thisTitle)))
Else
firstName = Trim(Mid(thisFullName, Len(thisTitle) + 1, InStr(thisFullName, " ") - Len(thisTitle)))
End If
getFirstName = firstName
End Function
Function getLastName(thisFullName As String) As String
Dim lastName As String
Dim spacePos As Integer
spacePos = nameAndTitle = InStr(thisFullName, " ")
If spacePos = 0 Then 'ถ้าไม่มีช่องว่าง แสดงว่าไม่มีนามสกุล
lastName = Trim(Mid(thisFullName, InStr(thisFullName, " "), Len(thisFullName)))
Else
lastName = blank
End If
getLastName = lastName
End Function
Re: อยากได้สูตรแยก คำนำหน้า ชื่อ และนามสกุล
Posted: Sat Sep 21, 2019 11:11 am
by snasui
SuminO wrote: Fri Sep 20, 2019 12:45 pm
Function getTitle(thisFullName As String) As String
Dim Titles As Variant
Dim myCount As Integer
' สร้างตัวแปร Array ชื่อ Titles เพื่อเก็บคำนำหน้าชื่อ สามารถเพิ่มได้อีกไม่จำกัด
' ต้องให้ นางสาว มาก่อน นาง มิฉะนั้นจะตรวจสอบนางสาวไม่ได้
Titles = Array("นาย", "นางสาว", "นาง", "เด็กชาย", "ด.ช.", "ว่าที่ ร.ต.")
For myCount = 0 To UBound(Titles)
getTitle = Left(thisFullName, Len(Titles(myCount)))
If Titles(myCount) = getTitle Then
Exit Function
Else
getTitle = blank
End If
Next myCount
End Function
Function getFirstName(thisFullName As String) As String
Dim thisTitle As String
Dim firstName As String
Dim spacePos As Integer
thisTitle = getTitle(thisFullName)
spacePos = InStr(thisFullName, " ")
If spacePos = 0 Then 'ถ้าไม่มีช่องว่าง
firstName = Trim(Mid(thisFullName, Len(thisTitle) + 1, Len(thisFullName) - Len(thisTitle)))
Else
firstName = Trim(Mid(thisFullName, Len(thisTitle) + 1, InStr(thisFullName, " ") - Len(thisTitle)))
End If
getFirstName = firstName
End Function
Function getLastName(thisFullName As String) As String
Dim lastName As String
Dim spacePos As Integer
spacePos = nameAndTitle = InStr(thisFullName, " ")
If spacePos = 0 Then 'ถ้าไม่มีช่องว่าง แสดงว่าไม่มีนามสกุล
lastName = Trim(Mid(thisFullName, InStr(thisFullName, " "), Len(thisFullName)))
Else
lastName = blank
End If
getLastName = lastName
End Function

กรุณาโพสต์ Code ให้แสดงในรูปแบบ Code ดูกฎการใช้บอร์ดข้อ 5 ด้านบน

จะได้สะดวกในการคัดลอกไปใช้ครับ