Trang 1/35 1 2 3 4 5 11 ... cuốicuối
Hiển thị kết quả tìm kiếm từ 1 đến 10 trên tổng số: 350
  1. #1

    Các phương pháp tách họ và tên đề nghị post ở đây

    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. Ngoài ra có những lúc bạn phải xắp xếp lại theo thứ tự A,B,C,...
    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.
    - 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.
    Code:
    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ập đoạn mã lệnh sau vào cửa sổ soạn thảo:

    - Bạn nhấn Ctrl+S để lưu lại và 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.


    Trích Nguyên văn bởi NguyenNgocSon View Post
    bạn xem thử code nhé:
    HTML Code:
    Function CatTen(HoVaTen As String) As String
    Dim l, i As Integer
    HoVaTen = Trim(HoVaTen)
    l = Len(HoVaTen)
    CatTen = ""
    For i = l To 1 Step -1
    If Mid(HoVaTen, i, 1) = Space(1) Then
    k = i
    Exit For
    End If
    Next i
    CatTen = Mid(HoVaTen, i + 1)
    End Function
    Có mấy góp ý sau :
    - Bạn nên hướng dẫn mọi người cách sử dụng, hàm này có tác dụng như thế nào ??
    - Việc khai báo các biến cần đầy đủ và tường minh hơn
    - Dòng : CatTen = "" là thừa, biến l là thừa
    - Hãy bẫy lỗi khi HoVaTen = ""
    - Nếu hàm này chỉ cắt mỗi tên thôi thì e rằng . . phí quá. hãy cho cái Option để có thể lấy HỌ - TÊN ĐỆM - TÊN
    - Trên GPE có các hàm như thế này rất nhiều rồi và đã tối ưu, bạn nên tham khảo nhé.

    --Chúc vui--
    Tập tin đính kèm Tập tin đính kèm
    • Loại tập tin: xls a.xls (15.0 KB, 2473 lần tải)
    thay đổi nội dung bởi: hoangdanh282vn, 12-12-09 lúc 02:25 PM


  2. #2
    Tham gia ngày
    01 2007
    Bài gởi
    1,122
    Cảm ơn
    160
    Được cảm ơn 617 lần trong 369 bài viết
    Bạn tham khảo ví dụ sau
    Function tach_ten(hoten)
    Dim do_dai
    Dim kitu
    do_dai = Len(Trim(hoten))
    kitu = "x"
    Do While kitu <> " "
    kitu = Mid(hoten, do_dai, 1)
    do_dai = do_dai - 1
    Loop
    tach_ten = Trim(Mid(hoten, do_dai + 2))
    End Function

  3. Có 3 thành viên cảm ơn chibi về bài viết này:


  4. #3
    Tham gia ngày
    08 2006
    Nơi Cư Ngụ
    TPHCM
    Bài gởi
    600
    Cảm ơn
    2,208
    Được cảm ơn 2,508 lần trong 594 bài viết

    Tách họ và tên

    ĐÂY LÀ CÁCH TÔI ĐÃ HỌC ĐƯỢC TRÊN DIỄN ĐÀN VÀ ĐANG THỰC HIỆN, XIN CHIA SẺ CÙNG BẠN:

    Từ file EXCEL có chứa dữ liệu bạn đang muốn tách họ và tên - bạn hãy nhấn Alt + F11 sau đó nhấn insert nhấn module dán đọan mã sau vào trong cửa sổ module:

    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


    SỬ DỤNG HÀM TÍNH TÁCH HỌ VÀ TÊN:
    Giả sử bạn muốn tách tên ra khỏi họ và họ đệm tại ô A1 = Phạm Xuân Trường / Gõ = tachten(A1,0) / Kết quả: Phạm Xuân
    Giả sử bạn muốn tách tên ra khỏi họ và họ đệm tại ô A1 = Phạm Xuân Trường / Gõ = tachten(A1,1) / Kết quả: Trường


    (Nếu muốn sử dụng hàm này cho tòan excel bạn hãy đọc thêm trên diễn đàn này)

    Chúc bạn thành công !
    Yahoo Messenger: ngocv_hr // Skype: humanresourcemanagement // vungochuman@gmail.com
    ---------------------------------------------------
    Gieo suy nghĩ - sẽ gặt hành vi.
    Gieo hành vi - sẽ gặt thói quen.
    Gieo thói quen - sẽ gặt tính cách.
    Gieo tính cách - sẽ gặt số phận.

  5. Có 5 thành viên cảm ơn vungoc về bài viết này:


  6. #4
    Tham gia ngày
    12 2006
    Nơi Cư Ngụ
    Đồng Tháp
    Bài gởi
    924
    Cảm ơn
    1,233
    Được cảm ơn 2,203 lần trong 661 bài viết

    Hàm vả thủ tục tách họ tên

    Họ tên thường nhập chung 1 cột cho nhanh. Sau đó ta có thể tách riêng tên ra 1 cột. Nhưng có lúc chúng ra cần tách ra 2 cột: cột họ, cột tên. Đây là 2 làm làm công việc đó:
    '======================
    Function TachHo(hoten As String) As String
    hoten = Trim(hoten)
    If hoten = "" Then
    TachHo = ""
    Else
    vt = InStrRev(hoten, " ", Len(hoten))
    If vt = 0 Then
    TachHo = ""
    Else
    TachHo = Trim(Mid(hoten, 1, vt))
    End If
    End If
    End Function

    '====================
    Function TachTen(hoten As String) As String
    hoten = Trim(hoten)
    If hoten = "" Then
    TachTen = ""
    Else
    vt = InStrRev(hoten, " ", Len(hoten))
    If vt = 0 Then
    TachTen = hoten
    Else
    TachTen = Mid(hoten, vt + 1)
    End If
    End If
    End Function

    '===================
    Bạn sử dụng hàm này bình thường như các hàm khác của Excel, nhưng nếu bạn cần tách họ tên thành 2 cột riêng biệt thì bạn phải thực hiện một loạt các thao tác sau:
    1. tách họ, tách tên trên 2 cột phụ
    2. chèn thêm cột bên trái cột họ tên
    3. Copy 2 cột họ tên mới tách và dán bằng Paste Special - Value trở về nơi cũ.
    Để làm nhanh các công việc đó, bạn có thể sử dụng thủ tuc TachHoTen.
    Sử dụng thủ tục này như sau:
    1. Chọn tất cả các ô chứa họ tên, kể cả ô chứa tiêu đề trên đầu.
    2. Chạy Sub TachHoTen.
    VBA sẽ làm thay cho bạn các việc còn lại. Lưu ý bạn là số cột trong vùng chọn phải là 1, nếu lớn hơn 1 VBA không thực hiện.

    '====================
    Sub TachHoTen()
    rd = Selection.Row
    sr = Selection.Rows.Count
    rc = rd + sr - 1
    c = Selection.Column
    sc = Selection.Columns.Count
    If sc > 1 Then
    MsgBox "Ban chon " & sc & " cot. Ban phai chon lai 1 cot", vbOKOnly, "Thong bao"
    Exit Sub
    End If
    Range(Cells(rd, c), Cells(rc, c)).Insert Shift:=xlToRight
    Range(Cells(rd, c), Cells(rc, c)).Insert Shift:=xlToRight
    For r = rd To rc
    Cells(r, c) = TachHo(Cells(r, c + 2))
    Cells(r, c + 1) = TachTen(Cells(r, c + 2))
    Next
    Range(Cells(rd, c + 2), Cells(rc, c + 2)).Delete Shift:=xlToLeft
    End Sub
    '==============
    Bạn có thể tham khảo trong tập tin TachHoTen.zip
    Tập tin đính kèm Tập tin đính kèm
    pham_duy_long@yahoo.com
    DĐ: 0918 975 460

  7. Có 4 thành viên cảm ơn phamduylong về bài viết này:


  8. #5
    Tham gia ngày
    01 2007
    Bài gởi
    1,122
    Cảm ơn
    160
    Được cảm ơn 617 lần trong 369 bài viết
    Bác Chibi ơi, Bác có thể giúp mình hiểu thêm 1 tí không? Mình cũng muốn tách họ tên, nhưng mình không biết Visual Basic, Bác có thể "chỉ vài chiêu" cho mình không? chỉ cần tỉ mỉ 1 chút để làm được cái tách tên mà bác chỉ ở trên thôi. Cảm ơn bác nhiều nhiều
    1- Khởi động EXCEL
    2- Vào VBE bằng cách Alt+F11
    3- Insert Modul
    4- Nhập đoạn code trên
    5- Nếu cần phong cấp cho hàm thì Save với File type là AddIns, sau đó dùng chức năng Tools->AddIns để khai báo sử dụng trên mọi Workbook.
    6- Sử dụng: =tach_ten(hoten) - Họ tên có thể nhập trực tiếp hoặc địa chỉ ô chứa họ tên.

  9. #6
    Ai không biết VBA (lập trình) thì làm theo tôi như sau:

    Giả sử A1 chứa "Họ và Tên".

    Lấy Họ:
    =LEFT(A1,LEN(A1)-FIND(" ",MID(A1,LEN(A1),1)&MID(A1,LEN(A1)-1,1)&MID(A1,LEN(A1)-2,1)&MID(A1,LEN(A1)-3,1)&MID(A1,LEN(A1)-4,1)&MID(A1,LEN(A1)-5,1)&MID(A1,LEN(A1)-6,1)&MID(A1,LEN(A1)-7,1)))

    Lấy Tên:
    =RIGHT(A1,FIND(" ",MID(A1,LEN(A1),1)&MID(A1,LEN(A1)-1,1)&MID(A1,LEN(A1)-2,1)&MID(A1,LEN(A1)-3,1)&MID(A1,LEN(A1)-4,1)&MID(A1,LEN(A1)-5,1)&MID(A1,LEN(A1)-6,1)&MID(A1,LEN(A1)-7,1))-1)

  10. Có 11 thành viên cảm ơn Nguyễn Duy Tuân về bài viết này:


  11. #7
    Tham gia ngày
    08 2006
    Nơi Cư Ngụ
    TP.HCM
    Bài gởi
    1,870
    Cảm ơn
    2,100
    Được cảm ơn 2,324 lần trong 1,110 bài viết
    Chào các bạn.
    Bạn có thể tách họ và tên theo cách sau.
    1/ Đầu tiên bạn chọn vùng dữ liệu
    2/ Sau đó vào menu Data / Text to Columns.
    3/ Cửa sổ Step 1 of 3, bạn chọn Delimited, rồi chọn Next.
    4/ Ở Step 2 of 3, tại mục Delimiters chọn Space rồi Next.
    5/ Trong Step 3 of 3, ở hộp Destination bạn nhập địa chỉ để cho ra kết quả. Cuối cùng nhấn Finish để xem kết quả.

    Thân !

  12. Có 7 thành viên cảm ơn tedaynui về bài viết này:


  13. #8
    Tham gia ngày
    12 2006
    Nơi Cư Ngụ
    Đồng Tháp
    Bài gởi
    924
    Cảm ơn
    1,233
    Được cảm ơn 2,203 lần trong 661 bài viết
    Trích Nguyên văn bởi tedaynui
    Chào các bạn.
    Bạn có thể tách họ và tên theo cách sau.
    1/ Đầu tiên bạn chọn vùng dữ liệu
    2/ Sau đó vào menu Data / Text to Columns.
    3/ Cửa sổ Step 1 of 3, bạn chọn Delimited, rồi chọn Next.
    4/ Ở Step 2 of 3, tại mục Delimiters chọn Space rồi Next.
    5/ Trong Step 3 of 3, ở hộp Destination bạn nhập địa chỉ để cho ra kết quả. Cuối cùng nhấn Finish để xem kết quả.

    Thân !
    Cách này chỉ áp dụng được với số từ của họ tên bằng nhau. Họ tên ít nhất 2 từ, nhiều nhất 7, 8 từ hoặc hơn. Nếu trong danh sách có một người có tên 8 từ, Excel tách ra 8 cột. Nhặt tên ra khùng luôn !
    pham_duy_long@yahoo.com
    DĐ: 0918 975 460

  14. Có 2 thành viên cảm ơn phamduylong về bài viết này:


  15. #9
    Tham gia ngày
    08 2006
    Nơi Cư Ngụ
    TP.HCM
    Bài gởi
    1,870
    Cảm ơn
    2,100
    Được cảm ơn 2,324 lần trong 1,110 bài viết
    Chào các bạn.
    Để không dùng VBA, mình có vài công thức các bạn test thử thế nào nhé.

    Giả sử ô A1 có chứa "Họ Chữ lót Tên"
    Lấy Họ :
    =LEFT(A4,FIND(" ",A4,1))

    Lấy Họ và Chữ lót :
    =LEFT(A4,FIND("*",SUBSTITUTE(A4," ","*",LEN(A4)-LEN(SUBSTITUTE(A4," ",""))))-1)

    Lấy Tên :
    =RIGHT(A1,LEN(A1)-FIND("*",SUBSTITUTE(A1," ","*",LEN(A1)-LEN(SUBSTITUTE(A1," ","")))))


    Thân !


  16. #10
    Tham gia ngày
    04 2007
    Bài gởi
    277
    Cảm ơn
    691
    Được cảm ơn 331 lần trong 139 bài viết
    Trích Nguyên văn bởi chibi
    Cách làm của tedaynui cũng rất hay, sau khi tách xong lấy ra tên không có gì phức tạp cả. Cái lợi là mọi người đều có thể làm được, không cần đến VBA.

    Quá đúng.

    Tôi nghĩ, cách làm của bạn tedaynui cũng hay nhưng chỉ dùng cho các trường hợp đơn giản, thông thường thôi. Chứ nếu tui có 1 danh sách hàng vài nghìn tên với độ dài khác nhau, nhiều cột mục mà áp dụng cách này bảng tính của tôi trở thành "râu tóc te tua, xồm đầu" và xin bái.... bai đấy!

    Nếu muốn sort một danh sách cho dễ dàng, việc tách họ và tên là rất cần, theo tôi vẫn nên bằng cách nào đó phải có 1 đoạn code tiện ích như các bạn đã giới thiệu để có thể dùng thường xuyên, nhanh chóng, tiện lợi.
    Tôi đề nghị các bạn nghiên cứu và bổ sung thêm sao cho đoạn mã này tự động chạy cái "rẹt!" từ đầu đến cuối danh sách, chứ mà ngồi mổ cò cho hết cái công thức trường giang đại hải hoặc mỗi lần thực hiện nó thì phải giở "Tự điển GPE" này ra tra (chứ nhớ sao nổi?) thì "chết toi em" luôn.
    thay đổi nội dung bởi: dvu58, 02-06-07 lúc 08:57 PM

Trang 1/35 1 2 3 4 5 11 ... cuốicuối

Thông tin về chủ đề này

Users Browsing this Thread

Hiện có 1 người đang xem đề tài này. (0 thành viên và 1 khách)

Đề tài tương tự

  1. Các thắc mắc về "File" đề nghị post ở đây
    Viết bởi duyhoa83 trong chuyên mục Những vấn đề chung
    Trả lời: 872
    Bài mới gởi: 21-07-14, 08:52 AM
  2. Các câu hỏi về nhờ giúp đỡ vẽ biểu đồ, đề nghị post vào đây.
    Viết bởi trunglee123 trong chuyên mục Excel và Các Biểu Đồ
    Trả lời: 147
    Bài mới gởi: 18-07-14, 03:19 PM
  3. Cách tính ngày nghỉ phép
    Viết bởi dknvnn trong chuyên mục Giải thích, gỡ rối, xử lý lỗi công thức
    Trả lời: 11
    Bài mới gởi: 24-05-10, 10:23 AM

Bookmarks

Bookmarks

Quyền Sử Dụng Ở Diễn Ðàn

  • Bạn không thể đăng đề tài mới
  • Bạn không thể đăng trả lời
  • Bạn không thể đăng file đính kèm.
  • Bạn không thể sửa bài viết.
  •  

Mudim v0.8 Tắt VNI Telex Viqr Tổng hợp
Chính tả Bỏ dấu kiểu mới  [Bật/Tắt (F9)]