Hot:

Tách họ và tên trong Excel

Trong công việc văn phòng, chúng ta thường nhập Họ và Tên thành hai cột riêng biệt, đối với những danh sách dài nhiều trang thì tốc độ nhập thường bị hạn chế do phải di chuyển qua lại giữa hai cột Họ và Tên; bài viết này có ý muốn hỗ trợ các bạn tạo các danh sách thật nhanh và đẹp đối với loại danh sách có hai cột Họ và Tên riêng biệt.

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.

TRẦN KHẮC MINH
Tags :

Xem bài theo ngày