Lấy chữ cái đầu trong họ - tên (1 người xem)

  • Thread starter Thread starter dungbko
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

dungbko

Thành viên mới
Tham gia
16/2/09
Bài viết
3
Được thích
1
Chào các anh chị,

Làm ơn chỉ giúp em xử lý vấn đề này với ạh.
Trong một ô họ tên, ví dụ "Mai Phương Thúy" em làm nào để có thể lấy ra được 3 chữ cái đầu trong mỗi chữ: M - Mai, P- Phương, T- Thúy.
Giúp em với nhé. Xin cảm ơn các anh chị.
Dungbko
 
Nếu ô C5 có chứa text "Mai Phương Thủy" thì mình sẽ lấy 3 chữ cái đầu bằng 3 công thức sau:
Chữ M - Mai:
=LEFT(C5,1)
Chữ P - Phương:
=MID(C5,FIND(" ",C5,1)+1,1)
Chữ T - Thuý:
=MID(C5,FIND(" ",C5,FIND(" ",C5,1)+1)+1,1)
Và cứ thế nếu còn chữ nào nữa.
Thân.
 
Chào các anh chị,

Làm ơn chỉ giúp em xử lý vấn đề này với ạh.
Trong một ô họ tên, ví dụ "Mai Phương Thúy" em làm nào để có thể lấy ra được 3 chữ cái đầu trong mỗi chữ: M - Mai, P- Phương, T- Thúy.
Giúp em với nhé. Xin cảm ơn các anh chị.
Dungbko
Dùng cho tên có 6 từ :
=LEFT(A1,1)&MID(A1,FIND(" ",A1)+1,1)&IF(ISERR(FIND(" ",A1,FIND(" ",A1)+1)),"",MID(A1,FIND(" ",A1,FIND(" ",A1)+1)+1,1))&IF(ISERR(FIND(" ",A1,FIND(" ",A1,FIND(" ",A1)+1)+1)),"",MID(A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1)+1)+1)+1,1))&IF(ISERR(FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1)+1)+1)+1)),"",MID(A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1)+1)+1)+1)+1,1))
 
Đã viết thế thôi thà đừng viết còn hơn. Nhìn vô chóng mặt quá!
Nếu muốn tổng quát cho mọi trường hợp thì ta nên dùng VBA thì hơn.
PHP:
Function tachChD(cel As String, Optional k As Long = 1)
Dim arr() As String
arr() = Split(cel, " ")
tachChD = Left(arr(k - 1), 1)
End Function
Xem file!
Thân.
 

File đính kèm

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
 

File đính kèm

Bạn hoangdanh282vn chỉ mình làm đi!
mình copy cái công thức của bạn vào cell trong sheet sao nó không ra đáp số gì cả mà nó ra nguyên cái công thức luôn à!

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ạn hoangdanh282vn chỉ mình làm đi!
mình copy cái công thức của bạn vào cell trong sheet sao nó không ra đáp số gì cả mà nó ra nguyên cái công thức luôn à!

Đó là UDF, là hàm tự tạo. Muốn sử dụng bạn phải cho nó vào thư viện hay trong module thi mới dùng được.
Copy đoạn code trên, bấm Alt+F11. Vào Insert, chọn module, ok
Doubleclick vào module, vào khung soạn thảo bên phải và paste đoạn code trên vào.
Thoát ra ngoài màn hình excel bình thường thì ta có thể sử dụng được .
VD tại ô B1 : =Firstchar(A1)
 
Nhớ phải dùng hàm TRIM cho cell trước cái nhé!
Mà phải là TRIM của hàm Excel (chứ không phải TRIM trong VBA)... Nếu ko kết quả tèo luôn
 
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
 
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
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!
 
Nhớ phải dùng hàm TRIM cho cell trước cái nhé!
Mà phải là TRIM của hàm Excel (chứ không phải TRIM trong VBA)... Nếu ko kết quả tèo luôn
Có thể dùng hàm TRIM của Excel trong VBA nhưng phải viết như thế này:
PHP:
txt = Application.WorksheetFunction.Trim(txt)
 
Mình muốn lấy là các chữ cái đầu của họ thôi không lấy phần tên ví dụ như:
Mai Phuong Thuy - > mpThuy
Nguyen Thi Phuong Thao - ntpThao
 
giúp tớ để số lại với nó cắt luôn số ví dụ ai cũng sn 1986 nó cắt thành 1 hết à
 
Bạn này muốn cắt cái gì vậy ta?

[ThongBao]
!$@!!quachdaigia;467249:=
giúp tớ để số lại với nó cắt luôn số ví dụ ai cũng sn 1986 nó cắt thành 1 hết à
!$@!!!$@!! !$@!!!$@!!
[/ThongBao]
 
chủ đề này đang nói về rút gọn tên trong excel, tớ muốn nó giữ lại 2 ký tự chứ k phải 1 ký tự đc không và khi rút gọn thì nó k rút gọn số có đc không, cảm ơn
 
chủ đề này đang nói về rút gọn tên trong excel, tớ muốn nó giữ lại 2 ký tự chứ k phải 1 ký tự đc không và khi rút gọn thì nó k rút gọn số có đc không, cảm ơn

Làm cái gì cũng có thể viết code được. Miễn là xác định rõ mẫu mã input và output.
Đã hỏi vấn đề rắc rối mà còn viết tắt tùm lum. Bình thường người ta chỉ đọc qua một lượt rồi suy nghĩ xem người hỏi muốn gì. Truờng hợp này: đọc -> dịch các chữ viết tắt -> suy nghĩ -> vòng trở lại xem mình có hiểu sai các chữ viết tắt -> trở lại từ đầu.
 
Đó là UDF, là hàm tự tạo. Muốn sử dụng bạn phải cho nó vào thư viện hay trong module thi mới dùng được.
Copy đoạn code trên, bấm Alt+F11. Vào Insert, chọn module, ok
Doubleclick vào module, vào khung soạn thảo bên phải và paste đoạn code trên vào.
Thoát ra ngoài màn hình excel bình thường thì ta có thể sử dụng được .
VD tại ô B1 : =Firstchar(A1)
Cảm ơn bạn rất nhiều, với ng ko biết tí gì về VBA như mình thì sự hỗ trợ của các bạn thật sự rất hữu ích XD
 
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 thêm, nếu ký tự đầu tiên của họ tên mà có dấu, mình muốn khi tách ra mà không có dấu thì xử lý sao vậy, (nếu ký tự đầu họ tên mà có dấu thì mình bỏ dấu đi, không lấy dấu )
mình ví dụ: Nguyễn Ít, với code trên nó sẽ tách ra NÍ, kết quả mình muốn là NI
Nguyễn Ân với code trên nó sẽ tách ra NÂ kết quả mình muốn là NA
Mai Văn Á với code trên nó sẽ tách ra MVÁ kết quả mình muốn là MVA
 
Lần chỉnh sửa cuối:
Bạn lập bảng danh sách gồm 2 cột & tra theo VLOOPKUP() là đơn giản, ai cũng làm được mà.
Nếu bạn có kiến thức VBA càng nhanh thành công hơn!
 
cho mình hỏi thêm, nếu ký tự đầu tiên của họ tên mà có dấu, mình muốn khi tách ra mà không có dấu thì xử lý sao vậy, (nếu ký tự đầu họ tên mà có dấu thì mình bỏ dấu đi, không lấy dấu )
mình ví dụ: Nguyễn Ít, với code trên nó sẽ tách ra NÍ, kết quả mình muốn là NI
Nguyễn Ân với code trên nó sẽ tách ra NÂ kết quả mình muốn là NA
Mai Văn Á với code trên nó sẽ tách ra MVÁ kết quả mình muốn là MVA
Tìm ở diễn đàn có bài chuyển có dấu về không dấu đó, kết hợp vào là đủ bộ.
 
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.
 
Nếu ô C5 có chứa text "Mai Phương Thủy" thì mình sẽ lấy 3 chữ cái đầu bằng 3 công thức sau:
Chữ M - Mai:
=LEFT(C5,1)
Chữ P - Phương:
=MID(C5,FIND(" ",C5,1)+1,1)
Chữ T - Thuý:
=MID(C5,FIND(" ",C5,FIND(" ",C5,1)+1)+1,1)
Và cứ thế nếu còn chữ nào nữa.
Thân.
Vậy Mai Thị Phương Thúy thì lấy sao????. Theo mình nghĩ tách thành cột sau đó lấy ký tự đầu tiên của mỗi cột.
 
Đâ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,. . . .
thành NTH01 kiểu j vậy bạn. Mình viết mãi VBA không được. nó chỉ là NTH thôi không biết thêm số ở sau ( khi có tên trùng lặp). Bạn chỉ giúp mình với.
Thanks
 
thành NTH01 kiểu j vậy bạn. Mình viết mãi VBA không được. nó chỉ là NTH thôi không biết thêm số ở sau ( khi có tên trùng lặp). Bạn chỉ giúp mình với.
Thanks
Bạn chia làm vài công đoạn:
a./ Tạo nhóm 3 từ cho mã của 1 danh sách hồ sơ;
b./ Xếp cột mã này theo chiều tăng
c./ Thêm chỉ số cho các mã trùng
Rất mong bạn thành công.
 
Bạn chia làm vài công đoạn:
a./ Tạo nhóm 3 từ cho mã của 1 danh sách hồ sơ;
b./ Xếp cột mã này theo chiều tăng
c./ Thêm chỉ số cho các mã trùng
Rất mong bạn thành công.
Cảm ơn bạn đã chia sẻ
Nhưng mình mới thêm được lọc trùng lặp.
Xong thêm lệnh thế nào vậy bạn

Function Name(Str As String) As String
Dim i As Byte
Str = Trim(Str): Name = Left(Str, 1)
For i = 1 To Len(Str)
If Mid(Str, i, 1) = " " Then Name = Name + Mid(Str, i + 1, 1)
Next
End Function
 
Bước (b) tiếp theo sẽ là sắp xếp theo chiều tăng dần của cột vừa tạo
Có thể bằng 2 cách:
Tự xếp bằng tay
Mở bộ thu lên thu các hành vi của bước trên & sau đó chỉnh lại câu lệnh nếu cần;

Họ & TênName
Bùi Xuân ThắmBXT
Bùi Thị Xuân ThànhBTXT
Châu Chấn HuyCCH
Cù LânCL
Công Tằng Tôn Nữ Minh NguyệtCTTNMN
Công Tằng Tôn Nữ Nguyệt MinhCTTNNM
Chu Ngọc SơnCNS
Cỗ Văn ẨnCVẨ
Dương Ánh HòaDÁH
Đào Đức DươngĐĐD
Đỗ Đăng DungĐĐD
Đinh La ThăngĐLT
Lê Công MinhLCM

Nhưng là mình thì mình chỉ chọn mã 'Name' này độ dài như nhau & là 03
Trường hợp như dòng 5 mình sẽ thêm J vô cho đủ 3 ( & sẽ là 'CJL')
Còng trường hợp dài quá cỡ, mình sẽ chỉ lấy 3 ký tự thôi: Đầu, áp cuối & cuối
Nếu đây thuộc quá trình tạo mã cho nhân viên cơ quan thì ta nên thêm công đoạn khử những từ tiếng việt có dấu & Đ => F thay vì D (ngõ hầu bớt trùng lặp mã được tạo ra)

Lấy độ dài mã luôn 3 có cái lợi là ta dễ thống kê xem trong CQ có bao nhiêu người là 'D' hay 'H',. . . .
 
Lần chỉnh sửa cuối:
Nếu ô C5 có chứa text "Mai Phương Thủy" thì mình sẽ lấy 3 chữ cái đầu bằng 3 công thức sau:
Chữ M - Mai:
=LEFT(C5,1)
Chữ P - Phương:
=MID(C5,FIND(" ",C5,1)+1,1)
Chữ T - Thuý:
=MID(C5,FIND(" ",C5,FIND(" ",C5,1)+1)+1,1)
Và cứ thế nếu còn chữ nào nữa.
Thân.
nếu tên dài ví dụ như: Nguyễn Trần Mai Thị Ngọc Ánh Tuyết thì cũng khó: Có một cách đơn giản cực kỳ: Text to columm----> sau đó lấy chữ cái đầu tiên (Cứ thoải mái cho tên có 20 chữ=20 cột) sau đó trim() là OK luôn.
 
nếu tên dài ví dụ như: Nguyễn Trần Mai Thị Ngọc Ánh Tuyết thì cũng khó: Có một cách đơn giản cực kỳ: Text to columm----> sau đó lấy chữ cái đầu tiên (Cứ thoải mái cho tên có 20 chữ=20 cột) sau đó trim() là OK luôn.
Nếu dùng excel 365 thì hàm giải quyết được mặc dù nó hơi dài.
 

File đính kèm

Đã viết thế thôi thà đừng viết còn hơn. Nhìn vô chóng mặt quá!
Nếu muốn tổng quát cho mọi trường hợp thì ta nên dùng VBA thì hơn.
PHP:
Function tachChD(cel As String, Optional k As Long = 1)
Dim arr() As String
arr() = Split(cel, " ")
tachChD = Left(arr(k - 1), 1)
End Function
Xem file!
Thân.
sao cái này em làm chỉ hiện được chữ cái dầu tiên bác nhỉ? Nếu em thay
Optional k As Long = 1 =>>>>
Optional k As Long = 2 thì được kết quả chữ thứ 2
Bài đã được tự động gộp:

cho mình hỏi thêm, nếu ký tự đầu tiên của họ tên mà có dấu, mình muốn khi tách ra mà không có dấu thì xử lý sao vậy, (nếu ký tự đầu họ tên mà có dấu thì mình bỏ dấu đi, không lấy dấu )
mình ví dụ: Nguyễn Ít, với code trên nó sẽ tách ra NÍ, kết quả mình muốn là NI
Nguyễn Ân với code trên nó sẽ tách ra NÂ kết quả mình muốn là NA
Mai Văn Á với code trên nó sẽ tách ra MVÁ kết quả mình muốn là MVA
đã test. oke luôn mới được. Cám ơn bạn
 
Lần chỉnh sửa cuối:
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
Em hỏi đoạn này với ạ:

KTD = Left(str, 1) & KTD(Mid(str, InStr(1, str, " ") + 1))
Left(str,1) => kết quả chữ cái đầu
nhưng KTD(Mid(str, Instr(1,str,"")+1 => em không hiểu sao nó có thể ra được các chữ cái Khác.
VD Pham Anh => PA thì oke nhưng Pham Anh Tao => thì sao ra dược "AT"
=> nhờ cụ giải thích thêm em đoạn này với ạ! Em cám ơn ạ
 
Tìm hiểu về Ctrl + E .. Nhanh nhưng khi dữ liệu thay đổi thì công thức cập nhật thêm vẫn chiếm ưu thế ( file nặng khi dữ liệu nhiều )
 
Vụ này chắc bao giờ lên chức Cụ mới dám trả lời đây.
Điều kiện để trở thành CỤ phải chăng đạt 1 trong những điều kiện:
1:= Cháu ngoại người đó đã có con;
2:= Nuôi con chim Cu khá mập & NẶNG;
3:= . . . . .
. . . . .
Left(str,1) => kết quả chữ cái đầu
nhưng KTD(Mid(str, Instr(1,str,"")+1 => em không hiểu sao nó có thể ra được các chữ cái Khác.

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))
MsgBox KTD
End If
End Function
 
Lần chỉnh sửa cuối:

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

Back
Top Bottom