Từ đầu tiên trong một câu

Thảo luận trong 'Ứng dụng Excel' bắt đầu bởi KKBS, 10 Tháng năm 2005.

4,346 lượt xem

  1. KKBS

    KKBS Thành viên sơ cấp

    Bài viết:
    53
    Đã được thích:
    0
    Nơi ở:
    HCM
    Trong Excel, có cách gì để trích ra từ đầu tiên trong một câu không? Tôi không muốn dùng VBA vì đa số người dùng Excel không phải là dân lập trình nên sẽ khó khăn khi nhìn thấy mấy câu lệnh VBA !

    Một trong những ứng dụng của việc này là khi họ và tên của nhân viên đã (lỡ) được gõ chung vào một ô, sau đó lại muốn tách ra.

    Thân,
    KKBS.
     
    #1
  2. levanduyet

    levanduyet Welcome

    Bài viết:
    535
    Đã được thích:
    11
    Giới tính:
    Nam
    Nơi ở:
    HCM
    To: KKBS,
    Thực sự ra đối với yêu cầu trên của bạn đâu có gì khó lắm đâu! Tôi nghĩ bạn dư sức làm việc này bằng việc kết hợp hàm tìm kiếm khỏang trống find và hàm left là bạn có thể làm được.
    Chúc bạn khỏe.
    Lê Văn Duyệt
     
    #2
  3. KKBS

    KKBS Thành viên sơ cấp

    Bài viết:
    53
    Đã được thích:
    0
    Nơi ở:
    HCM
    Đúng là tôi có thể tự làm được, nhưng tôi muốn post bài này lên như một câu hỏi mở để mọi người cùng suy nghĩ ra một hàm phối hợp "đẹp nhất" có thể áp dụng được vì tôi nghĩ ứng dụng của nó rất thực tiễn. Sự kết hợp các hàm phải cho ra một kết quả chính xác cho nhiều trường hợp khác nhau có thể xảy ra.

    Thân,
    KKBS.
     
    #3
  4. HyperVN

    HyperVN <b>Phu hót rác</b>

    Bài viết:
    1,833
    Đã được thích:
    14
    Nơi ở:
    Hải Phòng
    Mình cũng muốn thấy công thức đó trên diễn đàn, ai có không nhỉ, đáng tiếc là HyperVN hơi yếu về hàm trong excel (chỉ dùng mấy hàm thông dụng thôi).
     
    #4
  5. Quỳnh

    Quỳnh Thành viên sơ cấp

    Bài viết:
    22
    Đã được thích:
    0
    Nơi ở:
    Hà Nội
    Em cũng hay dùng cách của bác Levanduyet:

    =LEFT(A1,FIND(" ",A1,1))

    A1 là ô chứa Họ tên.
     
    #5
  6. Bình_OverAC

    Bình_OverAC Over Abnormal / Crazy

    Bài viết:
    845
    Đã được thích:
    7
    Nơi ở:
    Nha Trang
    Chỉnh lại cái của Quỳnh một chút nhé

    =LEFT(trim(A1),FIND(" ",trim(A1),1))
     
    #6
  7. levanduyet

    levanduyet Welcome

    Bài viết:
    535
    Đã được thích:
    11
    Giới tính:
    Nam
    Nơi ở:
    HCM
    To: OverAC,
    Chào, em lại xuất hiện hả? Hay chỉ xuất hiện...ít ít thôi!
    Chúc em khỏe.
    Lê Văn Duyệt
     
    #7
  8. ForestC

    ForestC Thành viên hoạt động

    Bài viết:
    377
    Đã được thích:
    1
    Nơi ở:
    E'rywhere
    Chị Quỳnh đúng là chuyên gia về chuỗi nhỉ, MaiKa nhớ để thực hiện việc này có mấy file ví dụ đã được upload lên FR trước đây là của anh Levanduyet rồi đó.
     
    #8
  9. KKBS

    KKBS Thành viên sơ cấp

    Bài viết:
    53
    Đã được thích:
    0
    Nơi ở:
    HCM
    Công thức này đến đây "đủ và đẹp" chưa các bạn?

    Thân,
    KKBS.
     
    #9
  10. dinhlinh

    dinhlinh Thành viên hoạt động

    Bài viết:
    15
    Đã được thích:
    0
    Nơi ở:
    Ho Chi Minh
    Nếu chỉ lấy từ đầu tiên, không có khỏang trắng
    =LEFT(trim(A1),FIND(" ",trim(A1),1)-1)
     
    #10
  11. ketoan4mat

    ketoan4mat Thành viên hoạt động

    Bài viết:
    3,910
    Đã được thích:
    18
    Nơi ở:
    Sài Gòn đẹp lắm
    Cái này trong '"Tiện ích tiếng Việt trong Excel" có mà. fải ko bà con?? À, sẵn đây mình muốn hỏi về "Tiện ích tiếng Việt trong Excel" được ko hả? Vì khi mình load file này về thì use được. Nhưng khi tắt máy, mở lai thì "Tiện ích tiếng Việt trong Excel" mất đi, ko biết nó nằm ở đâu hả?
    Thân,
     
    Last edited: 20 Tháng năm 2005
    #11
  12. Tuanktcdcn

    Tuanktcdcn Lão già ham vui

    Bài viết:
    548
    Đã được thích:
    50
    Nơi ở:
    Hà Nội
    Lấy từ cuối cùng của chuỗi!

    Lấy từ cuối cùng của chuỗi:
    Phần này có thể tách riêng "Tên" trong một cột "Họ và Tên".
    =Right(Chuoi,Find(" ",Mid(Chuoi,Len(Chuoi)-0,1)&Mid(Chuoi,Len(Chuoi)-1,1)&Mid(Chuoi,Len(Chuoi)-2,1)&Mid(Chuoi,Len(Chuoi)-3,1)&Mid(Chuoi,Len(Chuoi)-4,1)&Mid(Chuoi,Len(Chuoi)-5,1)&Mid(Chuoi,Len(Chuoi)-6,1)&Mid(Chuoi,Len(Chuoi)-7,1))-1)
    Từ Việt Nam có nghĩa chỉ dài tối đa 7 ký tự.
     
    #12
  13. SA_DQ

    SA_DQ Thành viên thân thiết

    Bài viết:
    431
    Đã được thích:
    37
    Nơi ở:
    HCM city
    Cắt Chuỗi đa năng đây, xin biếu tham khảo!

    Function HoTen(SHoTen as string, SLoai as string) as string
    dim Chu as String, ii as Integer, VTri as Integer
    SLoai=Ucase$(SLoai)
    Select Case SLoai
    Case ''H''
    HoTen=left(SHoTen,InStr(SHoTen & '' '','' '') 'Chú í mình Kh nhập '' đc
    Case ''T'',''L''
    Chu=SHoTen
    Do
    ii=InStr(Chu,'' ''): if ii=0 then exit do
    Chu=Mid(Chu,1 + ii): VTri = ii + VTri
    Loop
    HoTen=IIf(SLoai=''T'', Chu, left(SHoTen,VTri)
    Case Else
    HoTen = ''Xin Chào'' :two:
    End Select
    End Function :wall:
    Bổ sung lúc 12H50 8/08: Quá hay, nhưng thông cảm vì mình vẫn dùng W98 nên không có hàm InStrRev(SChu," ")
     
    Last edited: 8 Tháng tám 2005
    #13
  14. workman

    workman Thành viên hoạt động

    Bài viết:
    372
    Đã được thích:
    0
    Nơi ở:
    Ho Chi Minh
    rất hay, hoan hô SA DQ. Tuy nhiên bạn nên dùng hàm InStrRev sẽ nhanh hơn một chút (do không cần dùng vòng lặp).

    Xin đóng góp một hàm đơn giản chỉ gồm 1 dòng lệnh thôi. Kết quả tương tự như hàm của SA DQ

    Function HoTen(SHoTen As String, SLoai As String) As String

    HoTen = IIf(SLoai = "H", Left(SHoTen, InStr(SHoTen & " ", " ")), IIf(SLoai = "T", Right(SHoTen, Len(SHoTen) - InStrRev(SHoTen, " ")), Left(SHoTen, InStrRev(SHoTen, " "))))

    End Function
     
    #14
  15. KKBS

    KKBS Thành viên sơ cấp

    Bài viết:
    53
    Đã được thích:
    0
    Nơi ở:
    HCM
    Lập trình có một nét đẹp không thể nào chối cãi được. Tuy nhiên, ở mức độ người sử dụng, tôi vẫn cho rằng việc phối hợp các hàm có sẵn của Excel là đẹp hơn. Excel hay hơn các ứng dụng bảng tính khác nhờ chức năng phong phú và sự "thông minh" của nó. Ngoài ra, thư viện hàm dựng sẳn trong Excel là khá "đầy đủ". Trong phạm vi bài này, tôi cho rằng công thức mà các bạn đã nêu là đủ sử dụng rồi, không cần phải dùng tới VBA. Tuy nhiên trong công thức đó cần bổ sung thêm một chút để không bị lỗi khi trong ô chỉ có một từ thôi. Ngoài ra, không nên xem tên không dài quá 7 ký tự vì như vậy không được tổng quát cho lắm, rủi trong công ty có một ông Tây ba lô đang làm việc thì sao :)

    Ý kiến trên không nhằm mục đích phê bình, chỉ là ý kiến chủ quan của tôi dưới góc độ một người sử dụng bình thường nhất thôi.

    Thân.
    KKBS.
     
    #15
  16. workman

    workman Thành viên hoạt động

    Bài viết:
    372
    Đã được thích:
    0
    Nơi ở:
    Ho Chi Minh
    Tôi hoàn toàn tán thành ý của bác là nếu dùng hàm được càng nhiều càng tốt. Tuy nhiên trong thực tế đôi khi hàm không đủ sức giải quyết, hoặc nếu giải quyết được thì cũng trầy vi tróc vảy, thì vẫn nên có VBA hỗ trợ. Đặc biệt khi gặp data quá lớn mà dùng công thức mảng thì treo máy là cái chắc. Lúc này mới thấy VBA ngon lành hơn.
     
    #16
  17. KKBS

    KKBS Thành viên sơ cấp

    Bài viết:
    53
    Đã được thích:
    0
    Nơi ở:
    HCM
    Sẽ không có chuyện đúng hay sai trong vấn đề chọn công cụ để giải quyết công việc vì khi dùng sở trường của mình để giải quyết công việc thì vẫn tốt hơn, giống chuyện dùng thương hay dùng đao gì miễn là đánh hay là được. Tuy nhiên, dưới gốc độ là người lập trình, nếu các hàm built-in của Excel mà chạy chậm thì ta viết VBA cũng sẽ chậm, vì thuật toán bên trong của Excel phần lớn là tối ưu. Khi dữ liệu nhiều thì không nên dùng Excel nữa, phải chuyển sang Access hay một hệ cơ sở dữ liệu chuyên dụng như MS SQL chẳng hạn. Nhưng dù sao, tôi vẫn thừa nhận VBA là công cụ rất tốt của MS, giải quyết được nhiều việc mà nếu không có nó, Excel tự thân nó sẽ bó tay :)

    Thân,
    KKBS.
     
    #17

Chia sẻ trang này