Add-in tách họ tên để lấy họ, tên, tên đệm

Liên hệ QC

songxanh269

Thành viên mới
Tham gia
22/6/08
Bài viết
5
Được thích
2
Add-in này giúp bạn tách họ tên ra thành họ, tên hoặc tên đệm tuỳ ý muốn. Cú pháp như sau:
Họ = ho(......)
Tên đệm = dem(......)
Tên=ten(......)
Các bạn download tại đây
 
Lần chỉnh sửa cuối:
Add-in này giúp bạn tách họ tên ra thành họ, tên hoặc tên đệm tuỳ ý muốn. Cú pháp như sau:
Họ = ho(......)
Tên đệm = dem(......)
Tên=ten(......)
Các bạn download tại đây
Cảm ơn bạn đã chia sẽ nhưng giá mà bạn tìm kiến trước thì sẽ thấy chủ đề này có đầy trên GPE rồi, mà code cũng ngắn gọn chứ đâu có dài lê thê như của bạn vậy
(thậm chí công thức cũng làm được việc này)
Mặc khác, code của bạn vẫn còn lỗi đấy nhé ---> Vui lòng kiểm tra lại
 
Lần chỉnh sửa cuối:
Mình đã kiểm tra lại rồi nhưng không thấy lỗi. Bạn có thể chỉ rõ hơn lỗi nào không để mình sửa lại cho hoàn chỉnh?
 
Mình đã kiểm tra lại rồi nhưng không thấy lỗi. Bạn có thể chỉ rõ hơn lỗi nào không để mình sửa lại cho hoàn chỉnh?
Bạn thử với tên 2 từ xem! Chẳng hạn là Trần Tâm
Ngoài ra, code bạn thiếu bẫy lỗi cho trường hợp tên nào đó là 1 từ hoặc rổng
 
Cảm ơn bạn. Mình đã sửa lại lỗi mà bạn nói. Hi vọng là không còn lỗi nào nữa.
Tặng bạn code tôi viết, dùng Split. Tách họ, tách tên và tách chữ lót đều gom vào cùng 1 hàm
PHP:
Function NameSplit(ByVal FullName As String, ByVal sType As String) As String
  Dim Temp, Item1 As String, Item2 As String, Item3 As String, i As Long
  On Error Resume Next
  FullName = WorksheetFunction.Trim(FullName)
  Temp = Split(FullName, " ")
  Item3 = Temp(UBound(Temp))
  Item1 = Temp(0)
  Item2 = Trim(Replace(Replace(FullName, Item1, ""), Item3, ""))
  Select Case UCase(sType)
    Case "FIRSTNAME": NameSplit = IIf(UBound(Temp) > 0, Item1, "")
    Case "MIDDLENAME"
      If UBound(Temp) > 1 Then
        For i = 1 To UBound(Temp) - 1
          NameSplit = NameSplit & " " & Temp(i)
        Next
        NameSplit = Trim(NameSplit)
      End If
    Case "LASTNAME": NameSplit = Item3
  End Select
End Function
 

File đính kèm

Lần chỉnh sửa cuối:
Góp vui đoạn code kiểu "mực hệt"
Mã:
Sub Tach_Ten()
    Set Rng = Range([b3], [b65536].End(3))
    With Rng
        .Resize(, 4) = .Value
        .Offset(, 1).Replace " *", "", 2
        .Offset(, 3).Replace "* ", "", 2
        For Each cls In Rng
            cls(1, 3).Replace cls(1, 2), "", 2
            cls(1, 3).Replace cls(1, 4), "", 2
        Next
    End With
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Góp vui đoạn code kiểu "mực hệt"
Mã:
Sub Tach_Ten()
    Set Rng = Range([b3], [b65536].End(3))
    With Rng
        .Resize(, 4) = .Value
        .Offset(, 1).Replace " *", "", 2
        .Offset(, 3).Replace "* ", "", 2
        For Each cls In Rng
            cls(1, 3).Replace cls(1, 2), "", 2
            cls(1, 3).Replace cls(1, 4), "", 2
        Next
    End With
End Sub
bạn cho mình hỏi sau khi down file Tach_ten về máy thì mình muốn dùng thế nào để tách tên thế, tin học mình kém lắm mong bạn chỉ giúp :(
 
Tặng bạn code tôi viết, dùng Split. Tách họ, tách tên và tách chữ lót đều gom vào cùng 1 hàm
PHP:
Function NameSplit(ByVal FullName As String, ByVal sType As String) As String
  Dim Temp, Item1 As String, Item2 As String, Item3 As String, i As Long
  On Error Resume Next
  FullName = WorksheetFunction.Trim(FullName)
  Temp = Split(FullName, " ")
  Item3 = Temp(UBound(Temp))
  Item1 = Temp(0)
  Item2 = Trim(Replace(Replace(FullName, Item1, ""), Item3, ""))
  Select Case UCase(sType)
    Case "FIRSTNAME": NameSplit = IIf(UBound(Temp) > 0, Item1, "")
    Case "MIDDLENAME"
      If UBound(Temp) > 1 Then
        For i = 1 To UBound(Temp) - 1
          NameSplit = NameSplit & " " & Temp(i)
        Next
        NameSplit = Trim(NameSplit)
      End If
    Case "LASTNAME": NameSplit = Item3
  End Select
End Function
Code xài ngon. Cám ơn bạn đã chia sẻ.
 
Web KT

Bài viết mới nhất

Back
Top Bottom