EXCEL
Excel - Cơ bản
Excel - Công thức và hàm
Excel - Nâng Cao
Excel - Visual Basic
Excel - Tra cứu các
Excel - Bài tập
Online: 3
Excel: Làm thế nào để tách tên từ ô chứa họ và tên trong Excel

Sử dụng các hàm do người dùng viết để thực hiện các thao tác mà các hàm viết sẵn không có: Tách tên từ ô chứa họ và tên


Ví dụ này trình bày chi tiết cách viết một hàm của người dùng để tách tên từ ô họ và tên để thuận tiện cho việc sắp xếp danh sách theo tên.

Giả sử cần sắp xếp danh sách sau đây theo tên:

Excel - Viết hàm của người sử dụng bằng VBA

Hãy nghĩ rằng viết mã (code) bằng VBA trong Excel là không khó và bạn hoàn toàn có thể làm chủ. Chỉ cần bạn tuân thủ một số qui tắc.

  • Mã của các hàm người dùng viết đặt tại Module để đảm bảo Excel tìm thấy nó.
  • Viết mã từ đơn giản đến phức tạp.

1) Chuyển tới nới đặt mã: Module

-Từ trong Excel, bấm vào Tools > Macro > Visual Basic Editor. Bạn cũng đã nhận thấy là ta sẽ viết hàm của người sử dụng bằng Visual Basic. Cửa sổ mới Microsoft Visual Basic mở ra và bạn sẽ nhìn thấy ô Project - VBA Project. Nếu bạn không thấy chúng trên màn hình, bấm vào View > Project Explorer. Trong cửa sổ bên trái bạn tìm đến VBAProject (...tên file excel của bạn...) trong trường hợp bạn đang mở nhiều file excel. Lưu ý mã code phải đặt đúng trong file excel của bạn thì Excel mới tìm thấy chúng. Tiếp theo bạn tìm Module ... phía dưới VBAProject (...tên file excel của bạn...), nếu thấy thì bạn nháy kép vào để bắt đầu viết code, nếu không thấy thì chọn Insert > Module. Thí dụ ta chọn Module1.

Các bước mô tả ở trên được liệt kê dưới đây:

Excel - Viết hàm của người sử dụng bằng VBA

Excel - Viết hàm của người sử dụng bằng VBA

Excel - Viết hàm của người sử dụng bằng VBA

Mã code có dạng sau:

    Function LAY_TEN(c As Range)
    Dim i As Integer
    Dim s As String
    Dim found As Boolean
    Dim pos As Byte
    'Tim vi tri khoang trang cuoi cung (neu co)
    found = False
    s = c.Value
    For i = Len(s) To 1 Step -1
    If Mid(s, i, 1) = " " Then
    found = True
    pos = i
    Exit For
    End If
    Next
    If Not found Then
    LAY_TEN = s
    Else
    LAY_TEN = Mid(s, pos + 1, Len(s) - pos)
    End If
    End Function
Excel - Viết hàm của người sử dụng bằng VBA

Giải thích:

  • LAY_TEN là tên hàm do người dùng tự đặt.
  • c là tên biến cũng do người dùng tự đặt, là địa chỉ của ô chứa họ và tên trong file excel.
  • i là số nguyên, dùng để ghi vị trí dò tìm ký tự trong họ và tên.
  • s là biến trung gian để lưu họ và tên.
  • found sử dụng để nhận biết có tìm thấy dấu cách trong họ và tên hay không. Việc tìm tiến hành từ ký tự phải qua trái. Nếu thấy thì dừng lại và found thay đổi trạng thái. Nếu không thấy khoảng trống trong tên thì xem cả họ và tên sẽ là tên.
  • For To Step Next là vòng lặp xác định.
  • If Then Else End If là lệnh kiểm tra điều kiện.
  • Len là hàm trả về số ký tự trong chuỗi họ tên.
  • Mid là hàm tách ký tự từ chuỗi đã cho. Sau khi tìm thấy vị trí khoảng trống ta sử dụng hàm này để tách lấy phần tên.

2) Sử dụng hàm người dùng viết trong VBA Module trong excel - Tách tên từ họ và tên

Trở lại file excel, đánh vào ô C3: =LAY_TEN(B3) ta có:

Excel - Viết hàm của người sử dụng bằng VBA

Kéo công thức trong ô C3 xuống đến C12, ta có:

Excel - Viết hàm của người sử dụng bằng VBA
TOP