Tự động chuẩn hóa chuỗi khi Enter trong Excel
(Thủ thuật VBA trong Excel)
- Trong bài viết “Hàm chuẩn hóa chuỗi trong Excel”, Kênh phần mềm việt đã giới thiệu với mọi người cách viết hàm để chuẩn hóa chuỗi trong Excel. Hàm này sẽ rất có ích đối với người dùng khi Copy dữ liệu từ một nguồn khác và dữ liệu này chưa được chuẩn hóa theo mong muốn của người sử dụng. Đó là trường hợp Copy dữ liệu từ một nguồn khác, còn việc tự động chuẩn hóa ký tự nhập vào mỗi khi ấn Enter hoặc chuyển ô?. Việc tự động chuẩn hóa này sẽ giúp người sử dụng giúp ngắn được thời gian nhập liệu khi phải làm việc với các danh sách học sinh, học viên, nhân sự, khách hàng…. khi không còn phải quan tâm đến việc đánh ký tự chữ hoa ở đầu mỗi từ hoặc bị thừa các khoảng trắng.Hôm nay Kênh phần mềm việt sẽ giới thiệu với các bạn cách sử dụng hàm chuẩn hóa chuỗi để tự động hóa trong quá trình nhập liệu. Hàm này sẽ thực hiện các công việc: xóa bỏ các ký tự trống ở đầu và cuối, Xóa bỏ từ 2 ký tự trống liên tiếp ở giữa các từ, Viết hoa chữ cái đầu tiên tại mỗi từ mỗi khi người sử dụng ấn Enter hoặc chuyển ô. Nếu muốn kiểm soát việc tự động này theo những vùng hoặc những cột mong muốn, bạn hoàn toàn có thể thực hiện được.
1. Khởi động Microsoft Excel.
2. Nhấn ALT + F11 để bắt đầu Visual Basic Editor.
Vào Menu Inser\Module
3. Nhập toàn bộ đoạn mã sau vào
Function Chuanhoachuoi(str As String) As String
Dim sChuoi As String
Dim mlen As Long
Dim i As Long
'Neu chuoi =0 thi khong xu ly
If Len(str) = 0 Then Exit Function
'Xoa bo cac ky tu trang o dau va cuoi
str = Trim(str)
'Dem so ky tu chuoi
mlen = Len(str)
'Loai bo hai ki tu trong lien tiep
For i = 1 To mlen
If Mid(str, i, 1) = " " And Mid(str, i + 1, 1) = " " Then
str = Replace(str, " ", " ")
i = i - 1
End If
Next
For i = 1 To mlen
' Chuyen cac ky tu dau tien mot tu sang chu hoa
If Mid(str, i, 1) = " " Then
sChuoi = sChuoi & " " & UCase(Mid(str, i + 1, 1))
i = i + 1
Else
'Chuyen chu cai dau tien cua cau sang chu hoa
If i = 1 Then
sChuoi = UCase(Mid(str, 1, 1))
Else
sChuoi = sChuoi & LCase(Mid(str, i, 1))
End If
End If
Next
Chuanhoachuoi = sChuoi
End Function
Dim sChuoi As String
Dim mlen As Long
Dim i As Long
'Neu chuoi =0 thi khong xu ly
If Len(str) = 0 Then Exit Function
'Xoa bo cac ky tu trang o dau va cuoi
str = Trim(str)
'Dem so ky tu chuoi
mlen = Len(str)
'Loai bo hai ki tu trong lien tiep
For i = 1 To mlen
If Mid(str, i, 1) = " " And Mid(str, i + 1, 1) = " " Then
str = Replace(str, " ", " ")
i = i - 1
End If
Next
For i = 1 To mlen
' Chuyen cac ky tu dau tien mot tu sang chu hoa
If Mid(str, i, 1) = " " Then
sChuoi = sChuoi & " " & UCase(Mid(str, i + 1, 1))
i = i + 1
Else
'Chuyen chu cai dau tien cua cau sang chu hoa
If i = 1 Then
sChuoi = UCase(Mid(str, 1, 1))
Else
sChuoi = sChuoi & LCase(Mid(str, i, 1))
End If
End If
Next
Chuanhoachuoi = sChuoi
End Function
Kích nút Save để lưu lại, bạn có thể xem thêm bài viết cách lưu file Excel khi chứa Macro hoặc hàm.
4. Kích đúp vào tên Sheet mà bạn muốn thực hiện công việc tự động chuẩn hóa
- Tại mục (General) chọn WorkSheet
- Tại mục (Declarations) chọn Change
Nhập đoạn Code phía dưới vào màn hình soạn thảo
Private Sub Worksheet_Change(ByVal Target As Range)
Dim str As String
If Not (Intersect(Target, Range("$F:$F")) Is Nothing) Then
str = Chuanhoachuoi(Target.Value)
Target = str
End If
End Sub
Dim str As String
If Not (Intersect(Target, Range("$F:$F")) Is Nothing) Then
str = Chuanhoachuoi(Target.Value)
Target = str
End If
End Sub
Trong đó:
- Range("$F:$F"): Chỉ cho phép tự động chuẩn hóa tại cột F
- Range("$F:$G"): Cho phép tự động chuẩn hóa từ cột F đến cột G
- Range("$F:$F,$I:$J"): Cho phép tự động chuẩn hóa cột F và cột J
- Range("E8:E9,E11:E14"): Cho phép tự động chuẩn hóa từ ô E8 đến E9 và từ ô E11 đến ô E14
Bây giờ mỗi khi người sử dụng nhập các chuỗi ký tự ở những vùng cho phép tại Sheet vừa nhập đoạn Code trên, Excel sẽ tự động chuẩn hóa chuỗi ký tự đã nhập vào.
Tin học văn phòng
Nhận xét
Đăng nhận xét