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

Tham gia ngày
17 Tháng chín 2012
Bài viết
1,315
Được thích
1,468
Điểm
560
Nơi ở
Hà Nội
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

Huyyeu99999

Thành viên chính thức
Tham gia ngày
27 Tháng mười hai 2019
Bài viết
53
Được thích
25
Điểm
20
Bạn split máy cái cụm từ vào array. Rồi duyệt qua array và replace
 

Huyyeu99999

Thành viên chính thức
Tham gia ngày
27 Tháng mười hai 2019
Bài viết
53
Được thích
25
Điểm
20
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
 
Tham gia ngày
17 Tháng chín 2012
Bài viết
1,315
Được thích
1,468
Điểm
560
Nơi ở
Hà Nội
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
 

VetMini

Chuyên gia GPE
Tham gia ngày
21 Tháng mười hai 2012
Bài viết
9,884
Được thích
11,898
Điểm
1,560
...
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
 
Top Bottom