(Thủ thuật VBA trong Excel)
- Trong Word việc tắt/bật tính năng tự động viết chữ hoa đối với chữ cái đầu tiên trong một câu rất dễ dàng, vì đây là phần mềm chuyên để xử lý và định dạng văn bản. Tuy nhiên khi sang Excel, chức năng này chỉ hỗ trợ tự động viết hoa chữ cái đầu tiên sau dấu chấm (.) còn với câu đầu tiên trong một ô thì Excel lại không hỗ trợ. Người sử dụng phải sử dụng phím Shift để thực hiện công việc này. Hoặc người sử dụng vẫn nhập thông tin bình thường rồi sử dụng các hàm có sẵn hoặc các hàm tự viết để chuẩn hóa theo ý của mình.Dưới đây là các giải pháp do Kênh phần mềm việt đưa ra để xử lý vấn đề này.
1. Sử dụng kết hợp các hàm có sẵn
- Viết hoa chữ cái đầu tiên của câu
=CONCATENATE(UPPER(LEFT(B2,1)),RIGHT(B2,LEN(B2)-1))
Hoặc
=UPPER(LEFT(B2,1))&LOWER(RIGHT(B2,LEN(B2)-1))
- Viết hoa chữ cái đầu tiên của mỗi từ sử dụng hàm PROPER
=PROPER(B2)
- Viết hoa toàn bộ sử dụng hàm UPPER
=UPPER(B2)
Trong đó: B2 là cột dữ liệu cần chuẩn hóa
2. Sử dụng VBA
Nhấn ALT + F11 để bắt đầu Visual Basic Editor.
Vào Menu Inser\Module
Nhập toàn bộ đoạn mã sau vào
Function CapitalizeSentence(ByVal strContent As String) As String
Dim m As Object
strContent = LCase(strContent)
strContent = Application.Replace(strContent, 1, 1, UCase(Left$(strContent, 1)))
With CreateObject("VBScript.RegExp")
.Pattern = "\.\s."
.Global = True
For Each m In .Execute(strContent)
strContent = Application.Replace(strContent, m.FirstIndex + 1, m.Length, UCase(m.Value))
Next
End With
CapitalizeSentence = strContent
End Function
Dim m As Object
strContent = LCase(strContent)
strContent = Application.Replace(strContent, 1, 1, UCase(Left$(strContent, 1)))
With CreateObject("VBScript.RegExp")
.Pattern = "\.\s."
.Global = True
For Each m In .Execute(strContent)
strContent = Application.Replace(strContent, m.FirstIndex + 1, m.Length, UCase(m.Value))
Next
End With
CapitalizeSentence = strContent
End Function
Hoặc
Function CapitalizeSentence(txt As String) As String
Dim e
For Each e In Split(txt, ".")
SentenceCase = SentenceCase & ". " & UCase(Left$(Trim(e), 1)) & LCase(Mid$(Trim(e), 2))
Next
SentenceCase = Mid$(SentenceCase, 3)
End Function
Dim e
For Each e In Split(txt, ".")
SentenceCase = SentenceCase & ". " & UCase(Left$(Trim(e), 1)) & LCase(Mid$(Trim(e), 2))
Next
SentenceCase = Mid$(SentenceCase, 3)
End Function
Sau khi nhập xong các đoạn Code trên, bạn quay trở lại màn hình làm việc Excel và sử dụng các hàm này như các hàm có sẵn của Excel.
= CapitalizeSentence(B2)
0 comments:
Post a Comment