Nhờ giúp viết công thức lấy kí tự đầu tiên của từng từ trong một đoạn văn bản. (2 người xem)

Liên hệ QC

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

cuonghb644

Thành viên mới
Tham gia
19/2/08
Bài viết
17
Được thích
1
Nhờ các bạn giúp đỡ. VD: Nguyễn Thị Quỳnh Hoa thì trả về là NTQH. Số từ trong chuỗi trong khoảng >=3, <=10. Viết bằng hàm thôi nhé. Code tôi không biết gì cả. Cảm ơn.
 
Nhờ các bạn giúp đỡ. VD: Nguyễn Thị Quỳnh Hoa thì trả về là NTQH. Số từ trong chuỗi trong khoảng >=3, <=10. Viết bằng hàm thôi nhé. Code tôi không biết gì cả. Cảm ơn.

Nếu là hàm thì tôi chưa nghĩ ra. Nếu sử dụng code, bạn chép cái này vào một modul rồi sử dụng nó, có thể dịch ra file AddIn để dùng chung

PHP:
Function LocTu(strTu As String) As String
    Dim n As Integer, m As Integer
    Dim VT As String, Loc As String
    strTu = Trim(strTu)
    m = Len(strTu)
    Loc = Left(strTu, 1)
    For n = 2 To m
        VT = Mid(strTu, n, 1)
        If VT = " " Then Loc = Loc & Mid(strTu, n + 1, 1)
    Next
    LocTu = Loc
End Function

Thân
 

File đính kèm

Mình thấy Code của Minh Nguyêt sẽ ảnh hưởng về tốc độ nếu dữ liệu nhiều, mình tham gia hàm khác để khắc phục việc soát từng ký tự mà ta chỉ chỉ soát từng từ thôi

PHP:
Option Explicit
Function FirstChar(Ch As String) As String
Dim tam
Dim i As Integer
tam = Split(Ch, " ")
For i = 0 To UBound(tam)
If Len(Trim(tam(i))) > 0 Then FirstChar = FirstChar & Left(Trim(tam(i)), 1)
Next
End Function

Ví dụ Ô A2 chứa chuỗi cấn tách ta viết =FirstChar(A2)
 
Lần chỉnh sửa cuối:
Thêm 1 cách nữa cho vui cửa nhà nhân dịp xuân zề!

PHP:
Option Explicit
Function fSTRING(StrC As String) As String
 Dim VTr As Byte:        Const KT As String = " "

 StrC = KT & Trim(StrC)
 Do
   VTr = InStr(StrC, KT) + 1
   If VTr < 2 Then Exit Do      
   fSTRING = fSTRING & Mid(StrC, VTr, 1)      
   StrC = Mid(StrC, VTr + 1)
 Loop
End Function
 
Chỉnh sửa lần cuối bởi điều hành viên:
Nhờ các bạn giúp đỡ. VD: Nguyễn Thị Quỳnh Hoa thì trả về là NTQH. Số từ trong chuỗi trong khoảng >=3, <=10. Viết bằng hàm thôi nhé. Code tôi không biết gì cả. Cảm ơn.
Bài này dùng code sẽ nhanh gọn hơn. Tuy nhiên nếu bạn muốn công thức thì vẫn xong (hơi dài dòng)
1> Tìm vị trí của các ký tự đầu:
Ví dụ dữ liệu của bạn nằm tại cột A, từ A1 trở xuống. Vậy ta đặt con trỏ chuột tại dòng 1 rồi vào menu Insert\Name\Define và đặt 1 name
PHP:
DK =IF(MID(" "&TRIM($A1),ROW(INDIRECT("1:"&LEN(" "&TRIM($A1)))),1)=" ",ROW(INDIRECT("1:"&LEN(" "&TRIM($A1)))),"")

2> Tách lấy ký tự đầu của các từ bằng các name sau:

PHP:
Kt01 =IF(COUNT(DK)>=1,MID(TRIM($A1),SMALL(DK,1),1),"")
PHP:
Kt02 =IF(COUNT(DK)>=2,MID(TRIM($A1),SMALL(DK,2),1),"")
....
PHP:
Kt09 =IF(COUNT(DK)>=9,MID(TRIM($A1),SMALL(DK,9),1),"")
PHP:
Kt10 =IF(COUNT(DK)>=10,MID(TRIM($A1),SMALL(DK,10),1),"")

3> Nối các ký tự đã tìm được lại với nhau

PHP:
=Kt01&Kt02&Kt03&Kt04&Kt05&Kt06&Kt07&Kt08&Kt09&Kt10
 

File đính kèm

Lần chỉnh sửa cuối:
PHP:
Option Explicit
Function fSTRING(StrC As String) As String
 Dim VTr As Byte:        Const KT As String = " "

 StrC = KT & Trim(StrC)
 Do
   VTr = InStr(StrC, KT) + 1
   If VTr < 2 Then Exit Do      
   fSTRING = fSTRING & Mid(StrC, VTr, 1)      
   StrC = Mid(StrC, VTr + 1)
 Loop
End Function
Góp thêm 1 UDF gần giống với sư phụ
PHP:
Function TenTat(Text As String) As String
  Text = " " & WorksheetFunction.Trim(Text)
  Do Until InStr(Text, " ") = 0
    Text = Mid(Text, InStr(Text, " ") + 1, Len(Text))
    TenTat = TenTat & Left(Text, 1)
  Loop
End Function
 

File đính kèm

Cũng có thể dùng For . . Next (Đầu xuân vẽ vời 1 cái, hi, hi,. . . )

PHP:
Option Explicit
Function FindFirst(Text As String) As String
 Const KT As String = " ":       Dim VTr As Byte, jJ As Byte
 Text = KT & Text
 For jJ = 1 To 255
   VTr = InStr(Text, KT):           If VTr < 1 Then Exit For
   FindFirst = FindFirst & Mid(Text, VTr + 1, 1)
   Text = "GPE" & Mid(Text, VTr + 2)
 Next jJ
End Function
 
Xin vui lòng cho hỏi, nếu tách tên luôn trong ngoặc đơn được không ạ, code viết thế nào?
Ví dụ:
Nguyễn Anh Tuấn ==> NAT
Hoàng Trọng Nghĩa (Minh Thiện) ==> HTN(MT)
Nguyễn Văn Hoàng (P.12) ==> NVH(P.12)
Hai Cù Nèo (A.Hai) ==> HCN(A.H)
 
Web KT

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

Back
Top Bottom