Chỉ giúp muốn HOA chữ cái đầu dòng trong 1 cell

Liên hệ QC

thanhlp2007

Thành viên thường trực
Tham gia
24/10/07
Bài viết
201
Được thích
11
Chào các AC.
Mình quên cách chuyển Hoa chữ cái đầu dòng rồi. Mong đc hướng dẫn chỉ giúp.
VD : cell A1 : cộng hòa xã hội .....
Chuyển thành : Cộng hòa xã .......
Cám ơn các AC.
Mình muốn sử dụng trong Options và dùng hàm.
 
Chào các AC.
Mình quên cách chuyển Hoa chữ cái đầu dòng rồi. Mong đc hướng dẫn chỉ giúp.
VD : cell A1 : cộng hòa xã hội .....
Chuyển thành : Cộng hòa xã .......
Cám ơn các AC.
Mình muốn sử dụng trong Options và dùng hàm.

Giả sử dữ liệu tại A1. B1 nhập thế này xem sao

=UPPER(LEFT(A1,1))&RIGHT(A1,LEN(A1)-1)
 
Em muốn ra kết quả như thế này : Cộng Hòa Xã Hội ....
thì làm thế nào vậy?

Excel dùng để tính toán mà cứ bắt xử lý văn bản thì không đáng tí nào, chắc là xài code hoài nên muốn thử xem chứ gì

Muốn thì thử bắng code thôi

PHP:
Function viethoa(cell As Range)
Dim kq, tam, i
tam = Split(cell, " ")
For i = 0 To UBound(tam)
  kq = kq & UCase(Left(tam(i), 1)) & Right(tam(i), Len(tam(i)) - 1) & " "
Next
viethoa = kq
End Function

Trong hàm excel có Upper(), Lower() và Proper() đem ra xử lý
 
Lần chỉnh sửa cuối:
Excel dùng để tính toán mà cứ bắt xử lý văn bản thì không đáng tí nào
Mình thấy bạn tham gia cũng lâu rồi mà không chịu nghiên cứu sẽ nhớ lâu hơn
Muốn thì thử bắng code thôi
PHP:
Function viethoa(cell As Range)
Dim kq, tam, i
tam = Split(cell, " ")
For i = 0 To UBound(tam)
  kq = kq & UCase(Left(tam(i), 1)) & Right(tam(i), Len(tam(i)) - 1) & " "
Next
viethoa = kq
End Function

Trong hàm có Upper(), Lower() và Proper() đem ra xử lý
Hi, đã có hàm Proper() mà anh còn viết hàm này nữa.
Anh có thể giúp em viết đọan code như hàm Proper như trên
VD: tại cột A của em có họ tên nhân viên, nhưng nhập lộn xộn như sau
A1: Nguyễn vĂn VuI
A2: TrẦn THỊ bÉ
....
Sau khi chạy code sẽ cho kết quả như sau:
A1: Nguyễn Văn Vui
A2: Trần Thị Bé
......
---------------
Nếu dùng hàm thì fải thêm cột fụ
Em cảm ơn!
 
Hi, đã có hàm Proper() mà anh còn viết hàm này nữa.
Anh có thể giúp em viết đọan code như hàm Proper như trên
VD: tại cột A của em có họ tên nhân viên, nhưng nhập lộn xộn như sau
A1: Nguyễn vĂn VuI
A2: TrẦn THỊ bÉ
....
Sau khi chạy code sẽ cho kết quả như sau:
A1: Nguyễn Văn Vui
A2: Trần Thị Bé
......
---------------
Nếu dùng hàm thì fải thêm cột fụ
Em cảm ơn!

Code trên là để phục vụ cho code này đó mà

Em coi code này thế nào nhé

PHP:
Function viethoa(cell As Range)
Dim kq, tam, i
tam = Split(LCase(cell), " ")
For i = 0 To UBound(tam)
  kq = kq & UCase(Left(tam(i), 1)) & Right(tam(i), Len(tam(i)) - 1) & " "
Next
viethoa = kq
End Function

Viết code này là giống như đổ xăng rồi chạy lòng vòng về chỗ cũ vì có thể dùng hàm của excel để xài trong VBA
 
Lần chỉnh sửa cuối:
Code trên là để phục vụ cho code này đó mà

Em coi code này thế nào nhé

PHP:
Function viethoa(cell As Range)
Dim kq, tam, i
tam = Split(LCase(cell), " ")
For i = 0 To UBound(tam)
  kq = kq & UCase(Left(tam(i), 1)) & Right(tam(i), Len(tam(i)) - 1) & " "
Next
viethoa = kq
End Function
Đây là hàm tự tạo của anh để thay thế hàm Proper()
Cái em muốn là tại cột A sau khi chạy code sẽ cho kết quả tại cột A luôn
Còn dùng hàm thì fải có thêm cột fụ, ví dụ tại cột B, ta fải đặt công thức Proper() hay hàm tự tạo của anh.
Em cảm ơn!
 
Đây là hàm tự tạo của anh để thay thế hàm Proper()
Cái em muốn là tại cột A sau khi chạy code sẽ cho kết quả tại cột A luôn
Còn dùng hàm thì fải có thêm cột fụ, ví dụ tại cột B, ta fải đặt công thức Proper() hay hàm tự tạo của anh.
Em cảm ơn!
Thật ra tại rảnh nên viết cho vui, ai lại viết hàm kỳ vậy vì mình có thể kết hợp hàm Proper () và Lower() là giải quyết được rồi.

Nhưng nếu em muốn xử lý thẳng thì dùng Sub này xem sao, cũng khá ngắn
PHP:
Sub viethoa()
Dim dl, i
dl = Range([a1], [a65536].End(3)).Value
With Application
For i = 1 To UBound(dl)
   dl(i, 1) = .Proper(LCase(dl(i, 1)))
Next
End With
[a1].Resize(i - 1, 1) = dl
End Sub
 
Thật ra tại rảnh nên viết cho vui, ai lại viết hàm kỳ vậy vì mình có thể kết hợp hàm Proper () và Lower() là giải quyết được rồi.

Nhưng nếu em muốn xử lý thẳng thì dùng Sub này xem sao, cũng khá ngắn
PHP:
Sub viethoa()
Dim dl, i
dl = Range([a1], [a65536].End(3)).Value
With Application
For i = 1 To UBound(dl)
   dl(i, 1) = .Proper(LCase(dl(i, 1)))
Next
End With
[a1].Resize(i - 1, 1) = dl
End Sub

Tôi test thử thấy thế này cũng được mà.
Mã:
Sub Proper()
    For Each cls In Range([b2], [b65000].End(3))
        cls.Value = Application.Proper(cls.Value)
    Next
End Sub
 
Lần chỉnh sửa cuối:
Tôi test thử thấy thế này cũng được mà.
Mã:
Sub Proper()
    For Each cls In Range([b2], [b65000].End(3))
        cls.Value = Application.Proper(cls.Value)
    Next
End Sub
Nói chung là anh không thể dùng hàm Proper của công thức Excel hay Proper trong VBA để ChangeCase Proper được. Đơn giản vì nó không hổ trợ tiếng Việt Unicode
(nếu không thì trước giờ người ta đã không viết thêm hàm người dùng để ChangeCase tiếng Việt rồi)
 
Lần chỉnh sửa cuối:
Thật ra tại rảnh nên viết cho vui, ai lại viết hàm kỳ vậy vì mình có thể kết hợp hàm Proper () và Lower() là giải quyết được rồi.

Nhưng nếu em muốn xử lý thẳng thì dùng Sub này xem sao, cũng khá ngắn
PHP:
Sub viethoa()
Dim dl, i
dl = Range([a1], [a65536].End(3)).Value
With Application
For i = 1 To UBound(dl)
   dl(i, 1) = .Proper(LCase(dl(i, 1)))
Next
End With
[a1].Resize(i - 1, 1) = dl
End Sub
Hi, code của anh không đổi được chữ ổi và một số từ có nguyên âm đứng đầu khác
Nhưng hi vọng, tên họ học trò của em sẽ không có các nguyên âm này !!!!
Cảm ơn!
 
Hi, code của anh không đổi được chữ ổi và một số từ có nguyên âm đứng đầu khác
Nhưng hi vọng, tên họ học trò của em sẽ không có các nguyên âm này !!!!
Cảm ơn!

Tên Ổi ít ai đặt nhưng tên Ẩn thì chắc có chứ?
Một điều lưu ý rằng: Nếu ai dùng Office 2010 thì khỏi cần code gì ráo. Hàm Upper, Lower và Proper đã hộ trợ tốt Unicode rồi
 
Xin trả lời bạn thanhlp2007:
Tại 1 ô khác bạn gõ công thức: =upper(left(A1,1))&right(A1,len(A1)-1)

Xin nhờ mọi người hỗ trợ vấn đề khó hơn:
Ví dụ tại A1 có nội dung:
"nguyễn văn a
Lê thị B
trần văn C" (các tên được xuống dòng trong cùng 1 ô)
--> làm sao có thể viết hoa các ký tự đầu tiên của ô A1 để được kết quả:
"Nguyễn văn a
Lê thị B
Trần văn C"

Tks!
 
Chào mọi người.
Trường hợp này mọi người xem giúp làm thế nào?
Tại cùng 1 ô ví dụ A1 có nội dung:
"nguyễn đức A
Trần văn b
lê thị C" (xuống dòng sau mỗi tên)
Vậy làm sao để viết hoa tên cho đúng được nhỉ?
Tks.
 
Bạn có thể dùng đoạn code dưới đây:
Private Sub Worksheet_Change(ByVal Target As Range)
Target.Value = WorksheetFunction.Proper(Target.Value)
End Sub
 
Sub Proper() For Each cls In Range([b2], [b65000].End(3)) cls.Value = Application.Proper(cls.Value) Next End Sub
Khi mình dùng code này thì thấy rất ok vì nó rất đơn giản, nhưng mỗi lần mình thay đổi tên tại 1 ô nằm trong vùng đặt code thì lại phải bấm ALT+F11 rồi vào Module này để bấm F5 thì code mới chạy được.
VD: tại ô C1 mình có nội dung: nguyễn văn a ==> sau khi áp dụng code thì sẽ có kết quả: Nguyễn Văn A
nhưng sau đó mình vào lại 1 tên khác là trịnh thị b thì không thấy code chạy nữa
Mọi người giải thích giúp mình với. Xin cảm ơn ạ!
 
Web KT
Back
Top Bottom