Thứ Năm, 5 tháng 6, 2014

Tự động chuẩn hóa chuỗi khi Enter trong Excel

0 nhận xét

(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

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

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

0 nhận xét:

Đăng nhận xét