Toàn bộ chương trình gồm hai phần: macro TachHT() và hàm TachHoTen; sử dụng nhanh và rất tiện lợi. Đối với Macro TachHT() bạn chỉ việc nhập tất cả Họ Tên vào một cột; bôi đen vùng chọn và chạy nó; kết quả là ta có hai cột Họ, Chữ lót và Tên.
Trước tiên các bạn khởi động Excel, nhấn Alt_F8, trong mục Macro Name điền tên Macro là TachHT; kế đến chọn Create.
Tại màn hình soạn thảo Visual Basic Editor, các bạn nhập vào toàn bộ các mã nguồn như dưới đây:
Chú ý các phần có dấu nháy (‘) có chữ tiếng Việt theo sau là các phần giải thích, vì vậy các bạn không cần phải nhập vào!!!
‘~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
‘<<<<<<<<<<<<<<<<<< Macro Tách Họ và Tên >>>>>>>>>>>>>>>>>>>>>>>
‘Tach: Biến gán số lần thực hiện tách Họ và Tên
‘HgHT: Biến gán cho tổng số hàng trong vùng chọn
‘sd: Biến gán cho mỗi hàng trong vùng chọn
‘Lch: Biến gán phần đối số
‘~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Option Explicit
Public Sub TachHT()
Dim tach, HgHT, sd As Integer
Dim Lch, cb
On Error GoTo Thoat
HgHT = Selection.Rows.Count ‘đếm tổng số hàng trong vùng chọn
For tach = 1 To 2 ‘Chạy lần 1: Tách Họ và Chữ lót; lần 2: Tên
Lch = Choose(tach,1,2)
Selection.EntireColumn.Insert ‘Chèn thêm 1 cột bên trái vùng chọn
For sd = 0 To HgHT - 1 ‘Thi hành hàm TachHoTen
cb = ActiveCell.Offset(sd, 1).Value ‘Trị cột bên phải mỗi dòng
ActiveCell.Offset(sd, 0).Value = TachHoTen(cb, Lch)
ActiveCell.Offset(sd, 0).Value = ActiveCell.Offset(sd, 0).Value
Next sd
With Selection ‘Định dạng cho vùng đang chọn
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlBottom
.EntireColumn.AutoFit
.Offset(0, 1).Select
End With
Next tach
Selection.EntireColumn.Delete ‘Xóa cột hiện hành chứa Họ và Tên cũ
ActiveCell.Offset(0, 0).Select ‘Di chuyển về ô đầu
Thoat:
End Sub
‘~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
‘<<<<<<<<<<<<< Hàm TachHoTen >>>>>>>>>>>>>>>>>>
‘HovaTen: chuỗi Họ, Chữ lót và Tên
‘x: đối số; x =1 (tách Họ và Chữ lót); x = 2 (tách Tên)
‘~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Function TachHoTen(HovaTen, x)
Dim Ten, Dodai As Integer, i As Integer ‘Khai báo các biến Ten, Dodai,i
HovaTen = Trim(HovaTen) ‘Cắt bỏ khoảng trống thừa
Dodai = Len(HovaTen) ‘Xác định độ dài của chuỗi HovaTen
If Dodai = 0 Then
Ten = “”
Else ‘ Tìm khoảng trống đầu tiên kể từ bên phải chuỗi để tách Tên
For i = 1 To Dodai - 1
Select Case x ‘Lựa chọn tách Họ, Chữ lót và Tên
Case 1 ‘Lấy phần Họ và Chữ lót
If Mid(HovaTen, (Dodai - i), 1) = Space(1) Then
Ten = Left(HovaTen, (Dodai - i))
Exit For
Else ‘Bỏ trống khi HovaTen chung
Ten = Space(1)
End If
Case 2 ‘Lấy phần Tên
If Mid(HovaTen, (Dodai - i), 1) = Space(1) Then
Ten = Right(HovaTen, i)
Exit For
Else ‘Lấy phần HovaTen chung
Ten = HovaTen
End If
End Select
Next i
End If ‘Dodai = 0
TachHoTen = Ten
End Function
Sau khi nhập xong toàn bộ macro trên, các bạn nhấn Ctr_S và lưu bảng tính với tên mà bạn muốn; kế đến nhấn Alt_Q để thoát khỏi màn hình soạn thảo Visual Basic Editor, tại một Worksheet trống các bạn nhập theo minh họa dưới đây; bao gồm các tên làm mẫu với kích thước khác nhau (các bạn có thể tự nhập theo ý của các bạn) để kiểm tra macro có chạy đúng theo yêu cầu hay chưa:
A B C
1 Công Huyền Tôn Nữ Minh
Thư
2 Trần Khắc Tỵ
3 Trần Ngọc Phương Thảo
4 Trần Thị Hạnh Dung
5 Sesame
Nhập xong như minh họa trên, các bạn chọn vùng A1:A10; kế đến nhấn Alt_F8, chọn macro TachHT và nhấn Run. Kết quả sẽ được như sau:
A B C
1 Công Huyền Tôn Nữ Minh Thư
2 Trần Khắc Tỵ
3 Trần Ngọc Phương Thảo
4 Trần Thị Hạnh Dung
5 Sesame
Trên đây là toàn bộ chương trình “Tách Họ Tên trong Excel 97”; hy vọng nó giúp ích cho các bạn một phần nào trong công việc văn phòng và cũng có thể chương trình còn nhiều thiếu sót; rất mong các bạn đóng góp ý kiến và cải tiến cho chương trình hoàn thiện hơn.
Bình luận (0)