Hàm tự tạo viết hoa chữ cái đầu tiên có điều kiện

Liên hệ QC
Tham gia
17/9/12
Bài viết
1,343
Được thích
1,554
Giới tính
Nữ
Em chào các anh chị ạ. Em muốn viết một hàm tự tạo để sử dụng cho trường hợp của em như sau. Em có thể sử dụng hàm Proper để viết hoa các chữ cái đầu tiên trong chuối những có những từ nhất định em muốn phải ở định dạng viết hoa, là những từ ở dòng em bôi màu vàng tại cột Tên trong diễn giải phiếu chi ạ. Em có tự mày mò để làm những kết quả vẫn không được như mong muốn nên em gửi lên diễn đàn mong các anh chị giúp đỡ ạ. Trước phát sinh ít em vẫn dùng hàm Substitute cho tiện nhưng giờ phát sinh nhiều hơn nên em muốn tìm một hàm tự tạo để tuỳ biến hơn trong những trường hợp sau này. Em cảm ơn các anh chị nhiều ạ.

1579172895676.png
 

File đính kèm

  • Proper.xlsm
    11.7 KB · Đọc: 15
Bạn split máy cái cụm từ vào array. Rồi duyệt qua array và replace
 
Upvote 0
Mình làm thử rồi nhưng không ra không biết do mình sai cái gì. Để mình thử lại xem
Mã:
Function xibo(Str As Range, Substr As Range) As String
Dim i As Long
Dim strNew() As String
xibo = Str.Text
strNew = Split(Substr.Text, ",")
    For i = LBound(strNew) To UBound(strNew)
       xibo = Replace(xibo, strNew(i), UCase(strNew(i)), 1, -1, 1)
    Next i
End Function
 
Upvote 0
Mã:
Function xibo(Str As Range, Substr As Range) As String
Dim i As Long
Dim strNew() As String
xibo = Str.Text
strNew = Split(Substr.Text, ",")
    For i = LBound(strNew) To UBound(strNew)
       xibo = Replace(xibo, strNew(i), UCase(strNew(i)), 1, -1, 1)
    Next i
End Function
Cảm ơn bạn đã giúp đỡ. hôm qua mình làm nhưng nay kiểm tra lại thì viết sai hàm Proper nên code chạy sai. cảm ơn bạn nhiều nhé
Code của mình hôm qua thử mà không thành công đây
Mã:
Function vhcd(chuoi As String, vungdk As String) As String
Dim i As Integer
Dim arr
vhcd = WorksheetFunction.Proper(chuoi)
arr = Split(vungdk, ",")
    For i = 0 To UBound(arr)
       vhcd = Replace(vhcd, arr(i), UCase(arr(i)), 1, 10, 1)
    Next i
End Function
 
Upvote 0
...
Mã:
Function vhcd(chuoi As String, vungdk As String) As String
Dim i As Integer
Dim arr
vhcd = WorksheetFunction.Proper(chuoi)
arr = Split(vungdk, ",")
    For i = 0 To UBound(arr)
       vhcd = Replace(vhcd, arr(i), UCase(arr(i)), 1, 10, 1)
    Next i
End Function
vhcd = StrConv(vhcd, vbProperCase)
For Each ss In Split(StrConv(vungdk, vbProperCase), ",") ' đề phòng trường hợp vungdk không hẳn chứa Propercase
vhcd = Replace(vhcd, ss, UCase(ss))
Next ss
 
Upvote 0
Web KT
Back
Top Bottom