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

Liên hệ QC

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

  • Book1.xls
    21.5 KB · Đọc: 968
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

  • Tach lay ky tu dau trong Ho va ten.xls
    23.5 KB · Đọc: 867
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ộ.
 
Web KT
Back
Top Bottom