Lấy chữ cái đầu trong họ - tên

Liên hệ QC
Xin được góp vui thêm 1 cách không dùng vòng lặp.
Mã:
Function KTD(str As String) As String
    If InStr(1, str, " ") = 0 Then
        KTD = Left(str, 1)
    Else
        KTD = Left(str, 1) & KTD(Mid(str, InStr(1, str, " ") + 1))
    End If
End Function
Cho mình hỏi mình muốn lấy ký tự đầu nhưng để tránh trường hợp trùng mình muốn ghép thêm ký tự cuối của chữ cuối thì làm thế nào:
Ví dụ: Mai Phương Thúy thì sẽ cho kết quả là MPTY (chữ Y là chữ cái cuối trong chữ Thúy)

Cám ơn.
 
Đây là cách đơn giản:
Bạn thêm 1 khoảng trắng vô cuối của chuỗi họ tên;
Sau đó tạo vòng lặp Do . . . Loop để xử lí.

Dù sao bạn thiết kế mã như vậy vẫn trùng, như
Ngô Thị Hương & Nguyễn Thanh Hùng hay Nhữ Thị Hường,. . . .

Với 3 người có tên trên, mã nên chăng sẽ là NTH00, NTH01 & NTH09,. . . .
 
Lần chỉnh sửa cuối:
Mình xin hỏi trường hợp gần giống như yêu cầu của bạn chủ topic nhưng chỉ lấy chữ cái đầu của Tên thôi thì dùng công thức thế nào cho những người họ tên không chỉ gồm 3 chữ như Mai Phương Thuý mà có thể gồm 4 chữ hay chỉ có 2 chữ ạ???
 
Mình xin hỏi trường hợp gần giống như yêu cầu của bạn chủ topic nhưng chỉ lấy chữ cái đầu của Tên thôi thì dùng công thức thế nào cho những người họ tên không chỉ gồm 3 chữ như Mai Phương Thuý mà có thể gồm 4 chữ hay chỉ có 2 chữ ạ???
Bạn muốn lấy thế nào, cho ví dụ và file cụ thể
 
Mình xin hỏi trường hợp gần giống như yêu cầu của bạn chủ topic nhưng chỉ lấy chữ cái đầu của Tên thôi thì dùng công thức thế nào cho những người họ tên không chỉ gồm 3 chữ như Mai Phương Thuý mà có thể gồm 4 chữ hay chỉ có 2 chữ ạ???
Dùng 1 trong những hàm kể từ bài #4, và thêm như vầy:
=RIGHT(ChuCaiDau(A1), 1)

Hoặc là viết hàm mới:
Function KTDauCuaTen(byVal s As String) As String
KTDauCuaTen = MID(s, InStrRev(s & " ", " "), 1)
End Function
 
Lần chỉnh sửa cuối:
Lại là "Đệ quy" ---> Hôm trước đã nghĩ ra sẽ làm theo hướng này nhưng vụ đệ quy này xem ra vẫn chưa thông lắm
Cảm ơn bạn!
Bác ơi cho em hỏi tí ạ?
Nếu muốn lấy từng chữ cái của họ và tên mình làm sao ạ?
Ví dụ: Nguyễn Hoàng Văn Tùng Minh
Viết code để lấy từng chữ cái của người có tên ở ví dụ trên ạ.
Em cảm ơn!
 
Bác ơi cho em hỏi tí ạ?
Nếu muốn lấy từng chữ cái của họ và tên mình làm sao ạ?
Ví dụ: Nguyễn Hoàng Văn Tùng Minh
Viết code để lấy từng chữ cái của người có tên ở ví dụ trên ạ.
Em cảm ơn!
Thử code này.
Mã:
Public Function LayKyTuDau(str As String) As String
    Dim i As Integer, s As String, sSplit
    sSplit = Split(str, " ")
    For i = 0 To UBound(sSplit)
        s = s + Left(sSplit(i), 1)
    Next i
    LayKyTuDau = s
End Function
 
Bác ơi cho em hỏi tí ạ?
Nếu muốn lấy từng chữ cái của họ và tên mình làm sao ạ?
Ví dụ: Nguyễn Hoàng Văn Tùng Minh
Viết code để lấy từng chữ cái của người có tên ở ví dụ trên ạ.
Em cảm ơn!
Bác này hơn một năm nay rồi chưa thấy vào diễn đàn bạn ạ.
 
Thử code này.
Mã:
Public Function LayKyTuDau(str As String) As String
    Dim i As Integer, s As String, sSplit
    sSplit = Split(str, " ")
    For i = 0 To UBound(sSplit)
        s = s + Left(sSplit(i), 1)
    Next i
    LayKyTuDau = s
End Function
Dạ, em cảm ơn bác đoạn code. NHƯNG Ý CỦA EM LÀ MUỐN LẤY TỪNG CHỮ MỘT RA Ạ.
VÍ DỤ: NGUYỄN HOÀNG VĂN TÙNG MINH
SAU KHI TÁCH:
N G U Y Ễ N H O À N G V Ă N T U N G M I N H
Những chữ cái thể hiện trên từng ô cell ạ.
 
Dạ, em cảm ơn bác đoạn code. NHƯNG Ý CỦA EM LÀ MUỐN LẤY TỪNG CHỮ MỘT RA Ạ.
VÍ DỤ: NGUYỄN HOÀNG VĂN TÙNG MINH
SAU KHI TÁCH:
N G U Y Ễ N H O À N G V Ă N T U N G M I N H
Những chữ cái thể hiện trên từng ô cell ạ.
Đây, có tuỳ chọn tách theo lý tự gì luôn nha.
Mã:
Function T_Tachchuoi(Str As String, Optional txt As String)
Application.Volatile
Dim i As Integer, z As Integer, x As Integer, a As Integer
Name = Application.WorksheetFunction.Trim(Application.WorksheetFunction.Substitute(Str, Chr(160), Chr(32)))
z = 0: a = 1: x = 1
For i = 1 To Len(Name)
     If Mid(Name, i, Len(txt)) = txt Or i = Len(Name) Then z = z + 1
Next
ReDim Arr(0, 1 To z)
For i = 2 To Len(Name) + 1
     If Mid(Name, i, Len(txt)) = txt Or i = Len(Name) Then
          Arr(0, x) = Replace(Mid(Name, a, i - a + Len(txt)), txt, "")
          a = i
          x = x + 1
     End If
Next
T_Tachchuoi = Arr
End Function
 
Đây, có tuỳ chọn tách theo lý tự gì luôn nha.
Mã:
Function T_Tachchuoi(Str As String, Optional txt As String)
Application.Volatile
Dim i As Integer, z As Integer, x As Integer, a As Integer
Name = Application.WorksheetFunction.Trim(Application.WorksheetFunction.Substitute(Str, Chr(160), Chr(32)))
z = 0: a = 1: x = 1
For i = 1 To Len(Name)
     If Mid(Name, i, Len(txt)) = txt Or i = Len(Name) Then z = z + 1
Next
ReDim Arr(0, 1 To z)
For i = 2 To Len(Name) + 1
     If Mid(Name, i, Len(txt)) = txt Or i = Len(Name) Then
          Arr(0, x) = Replace(Mid(Name, a, i - a + Len(txt)), txt, "")
          a = i
          x = x + 1
     End If
Next
T_Tachchuoi = Arr
End Function
bác hướng dẫn giúp cách dùng ạ
 
Dán vào module rồi sử dụng hàm nha bác, hàm là =T_Tachchuoi("Chuỗi cần tách", "tách tại ký tự gì, bỏ trống là tách từng ký tự")
cái mình cần muốn giúp là làm sao tên của người đó ta dùng hàm là được tách từng chữ cái ra từng ô cell 1
ví dụ: LÊ BÍCH TRÂM nằm ở ô cell là A1 đi
khi dùng hàm tách các ký tự tại ô A1 ta có B1: "L", C1: "Ê", D1: " ",E1: "B", F1: "I"; và .... tới ô cuối cùng là "M"
Bài đã được tự động gộp:

cái mình cần muốn giúp là làm sao tên của người đó ta dùng hàm là được tách từng chữ cái ra từng ô cell 1
ví dụ: LÊ BÍCH TRÂM nằm ở ô cell là A1 đi
khi dùng hàm tách các ký tự tại ô A1 ta có B1: "L", C1: "Ê", D1: " ",E1: "B", F1: "I"; và .... tới ô cuối cùng là "M"
Cũng hàm của bác có thể chỉnh T_Tachchuoi(A1,1)
A1: là ô cần tách
1: là vị trí ký tự ta cần tách á ( có thể ta lấy ở vị trí số 2, 3, 4 , vị trí n)
 
Lần chỉnh sửa cuối:
Po_pikachu đã dùng split rồi thì mình dùng thêm cái For nữa cho dễ hình dung :
PHP:
Function Firstchar(Str As String) As String
Dim i As Byte
Str = Trim(Str): Firstchar = Left(Str, 1)
For i = 1 To Len(Str)
    If Mid(Str, i, 1) = " " Then Firstchar = Firstchar + Mid(Str, i + 1, 1)
Next
End Function
bác ơi cho mình hỏi thăm tí ạ!
ví dụ mình cho một cái tên: LÊ THỊ KIM BÍCH được nằm tại ô cell là A1
có thể viết hàm tách từng chữ cái 1 trong ô cell A1 không ạ
như: Tachten(A1,1)
A1: là ô cell chứa chuổi ký tự cần tách
1: là vị trí ký tự cần tách
kính nhờ bác giúp tí ạ, em cảm ơn rất nhiều.
 
Web KT
Back
Top Bottom