PDA

Xem phiên bản đầy đủ : Tách họ và tên ra khỏi họ tên trong Excel


Xuân Hùng
17-06-2007, 08:55
Khi nhập liệu vào bảng tính Excel, thông thường ta nhập cả họ và tên vào cùng một ô. Tuy nhiên, có khi sau đó ta cần phải tách riêng tên ra khỏi họ và tên đệm, nếu làm thủ công bằng thao tác sao chép rồi dán qua ô khác thì sẽ rất bất tiện. Nếu sử dụng hàm Right kết hợp với một vài hàm khác thì cũng có thể cho ra kết quả như bạn muốn, nhưng trong một số trường hợp sẽ cho kết quả không chính xác. Có một phương pháp tối ưu hơn sẽ giúp bạn hoàn thành tốt công việc này, cách thực hiện cũng khá đơn giản như sau:

- Trên bảng tính chứa cột họ tên cần tách, bạn chọn menu Tools > Macro > Visual Basic Editor, lập tức xuất hiện chương trình Microsoft Visual Basic. http://www.echip.com.vn/echiproot/images/2006/50tc/excel1.jpg
- Tiếp theo, bạn nhấn menu Insert và chọn Module sẽ xuất hiện một cửa sổ soạn thảo. http://www.echip.com.vn/echiproot/images/2006/50tc/excel2.jpg
Bạn nhập đoạn mã lệnh sau vào cửa sổ soạn thảo: Private Function Tachten(ten As String, lg As Integer)
Dim j As Integer
Name = Trim(ten)
For j = Len(Name) To 1 Step -1
If Mid(Name, j, 1) = " " Then
If lg = "1" Then
Tachten = Right(Name, Len(Name) - j)
Else
Tachten = Left(Name, j)
End If
Exit For
End If
Next
End Function - Bạn nhấn Ctrl+S để lưu lại và đóng cửa sổ VB (nút close X) để quay trở về bảng tính Excel. - Bây giờ để tiến hành tách riêng họ và tên đệm vào một ô mới, bạn đặt con trỏ tại ô mới chứa họ và tên đệm rồi nhập vào công thức =TachTen(B3,0) và nhấn Enter sẽ thấy ngay kết quả. - Để tách riêng tên vào một ô mới, bạn đặt con trỏ tại ô sẽ chứa tên cần tách và nhập vào công thức =TachTen(B3,1) rồi nhấn Enter là xong. Ghi chú: B3 chính là địa chỉ của ô ban đầu chứa cả họ, tên đệm và tên. http://www.echip.com.vn/echiproot/images/2006/50tc/excel3.jpg

mrhangson
18-06-2007, 05:43
chào thầy !
em chân thành cám ơn thầy đã chia sẽ một thủ thuật trong tin học văn phòng. Trước đây, em đã gặp tình huống này nhưng không biết làm ! hôm nay rất vui vì mình đã học thêm được một thủ thuật ứng dụng hay !
Phạm Sơn

ddd
18-06-2007, 06:06
Trên website echip có một cái tiện ích Excel có làm được cái này, Thầy Cô có thể lầy để xài.
chỉ có 690 KB (File nén)
down here (http://www.echip.com.vn/echiproot/Softwares/2004/sapxeptiengviet.zip)

lao_tru
18-06-2007, 07:11
Đúng đó, trên đó có nhiều tiện ích hay cho Excel.

thaygiaolang
17-08-2007, 22:32
Tôi có tự mày mò viết một số macro để dùng trong công việc hàng ngày, nay xin chia sẻ cho mọi người. Những ai chưa có chương trình nào hay hơn thì có thể dùng tạm. Còn các cao thủ thì cũng xin ghé mắt xem giùm và cho vài lời chỉ giáo.
Xin nói trước là tôi có "mượn tạm" hai thư viện của phần mềm VietKey (bất hợp pháp), nhưng với mục đích là để sử dụng chứ không kinh doanh gì cả nên xin mọi người xá tội.
Cách dùng : tải file đính kèm, giải nén, chép 2 file thư viện vklib.dll và vkspell.dll vào thư mục windows, rồi cài file add-in vn_tool.xla vào excel. Khi nhấp chuội phải sẽ xuất hiện menu để dùng.

phantuhuong
24-08-2007, 23:58
Tôi xin bổ sung cách của Tác giả Nguyễn Duy Tuân: Không dùng vòng For. Dùng cho 2 trường hợp tách Họ hoặc Tên.



Function TachHoTen(ByVal HoVaTen As String, Optional TachTen As Boolean = True) As String
Dim Pos_Right As Integer
If HoVaTen = "" Then GoTo EndFunc
HoVaTen = Trim(HoVaTen) 'Xoá khoảng trống hai bên của "HoVaTen"
Pos_Right = InStrRev(HoVaTen, " ") 'Kiểm tra hợp lệ
If Pos_Right = 0 Or Pos_Right - 1 < 0 Or Pos_Right + 1 > Len(HoVaTen) Then GoTo EndFunc:
End If
If TachTen Then
TachHoTen = Mid(HoVaTen, Pos_Right + 1)
Else TachHoTen = Left(HoVaTen, Pos_Right - 1)
End If
EndFunc:
End Function


=TachHoTen("Nguyễn Duy Khánh"). Kết quả là "Khánh".
=TachHoTen("Nguyễn Duy Khánh",False). Kết quả là "Nguyễn Duy".

Hàm InStrRev chỉ dùng từ Office2000(v9) trở lên.
__________________

ktth
09-09-2007, 17:20
Em cũng có một cách đơn giản:
b1: Tool/Macro/Visual basic Editor
b2: Insert/Module
b3: gõ bảng công thức bên dưới
Public Function ten(hoten)
ten = Mid(Trim(hoten), InStrRev(Trim(hoten), " ") + 1)
End Function

Public Function Ho(hoten, ten)
Ho = Mid(Trim(hoten), 1, Len(Trim(hoten)) - Len(ten))
End Function
b4: save và nhấn vào nút biểu tượng Excel để quay về màn hình Excel
b5: VD ô A1 gõ Nguyễn Văn Mười Hai
Kết quả
b6: kết quả tên ở ô B1, gõ vào ô B1 =ten(A1)
b7: kết quả họ ở ô C1, gõ vào ô C1 =ho(A1,B1)

Xuân Hùng
07-12-2007, 23:29
Tiện ích Excel và Word tôi đã upload rồi! tôi nghĩ sử dụng nó sẽ rất hay! là trong Visual..cũng hay nhưng thật tốn thời gian! hãy sử dụng những gì đang có..hi..hi
Nếu ai cần dowload nè!

minhphuc80
10-12-2007, 23:20
Rất tuyệt khi xài tiện ích này. Cám ơn Thầy nhiều

surau
21-06-2008, 19:17
Cách làm của cô Hiền Cũng hay lắm, coi như tạo thêm 2 hàm mới.