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

lehuong1409

Thành viên tích cực
Tham gia ngày
17 Tháng chín 2012
Bài viết
1,309
Được thích
1,455
Đ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 mới
Tham gia ngày
27 Tháng mười hai 2019
Bài viết
35
Được thích
11
Điểm
15
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
 

lehuong1409

Thành viên tích cực
Tham gia ngày
17 Tháng chín 2012
Bài viết
1,309
Được thích
1,455
Đ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

Gian hùng bàn phiếm (thành viên trôi nước)
Tham gia ngày
21 Tháng mười hai 2012
Bài viết
7,841
Được thích
9,197
Điểm
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