Tách họ tên 1 người trong chuỗi chứa tên của nhiều người (4 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

thien85long

Thành viên mới
Tham gia
2/4/10
Bài viết
6
Được thích
1
Hi all!
Mình gặp một vấn đề nhưng không biết giải quyết thế nào:
mình có 1 cột chứa họ và tên của nhiều người, mình muốn tách họ và tên của một người cụ thể thì làm cách nào.
Mình muốn dùng cách này để đếm có bao nhiêu ô chứa tên người đó.
vidụ như trong file đính kèm, mình muốn đếm xem có bao nhiêu ô chứa tên "nguyễn văn xuyên" thì phải làm thế nào?
Mong các bạn chỉ giúp.-\\/.
 

File đính kèm

Hi all!
Mình gặp một vấn đề nhưng không biết giải quyết thế nào:
mình có 1 cột chứa họ và tên của nhiều người, mình muốn tách họ và tên của một người cụ thể thì làm cách nào.
Mình muốn dùng cách này để đếm có bao nhiêu ô chứa tên người đó.
vidụ như trong file đính kèm, mình muốn đếm xem có bao nhiêu ô chứa tên "nguyễn văn xuyên" thì phải làm thế nào?
Mong các bạn chỉ giúp.-\\/.
Bạn có thể dùng hàm countif( [vùng cần đếm],[giá trị cần đếm]) để đếm có bao nhiêu người có tên như thế. Còn việc tách họ, tên thì chưa nghĩ ra, mong các cao thủ hướng dẫn thêm.
 
Cách nhanh nhất là bạn dùng chức năng Text to Columns. bạn chọn toàn bộ dữ liệu, vào Data/ Text to Columns.
Bước 1: bạn chọn Delimited sau đó nhấn Next
Bước 2: bạn tích vào ô other sau đó nhấn Next ho ặc Finish
Ngoài ra bạn cũng có thể dùng công thức để tách từng người ra như trong file
 

File đính kèm

Cách nhanh nhất là bạn dùng chức năng Text to Columns. bạn chọn toàn bộ dữ liệu, vào Data/ Text to Columns.
Bước 1: bạn chọn Delimited sau đó nhấn Next
Bước 2: bạn tích vào ô other sau đó nhấn Next ho ặc Finish
Ngoài ra bạn cũng có thể dùng công thức để tách từng người ra như trong file
cám ơn bạn rất nhiều, nhưng công thức của bạn dùng để tách tên người trước dấu cộng và tên người sau dấu cộng, đúng không? như vậy thì không đúng với nhu cầu của mình rồi, vì mình muốn ô đích sẽ hiện ra tên "Nguyễn Văn Xuyên" nếu ô nguồn có chứa tên đó, còn ô nguồn không có chứa thì ô đích sẽ trả về rỗng. Mong các cao thu chỉ giúp? Cám ơn rất nhiều.
 
cám ơn bạn rất nhiều, nhưng công thức của bạn dùng để tách tên người trước dấu cộng và tên người sau dấu cộng, đúng không? như vậy thì không đúng với nhu cầu của mình rồi, vì mình muốn ô đích sẽ hiện ra tên "Nguyễn Văn Xuyên" nếu ô nguồn có chứa tên đó, còn ô nguồn không có chứa thì ô đích sẽ trả về rỗng. Mong các cao thu chỉ giúp? Cám ơn rất nhiều.
Vậy thì dùng COUNTIF đi
Xem file đính kèm
 

File đính kèm

ồ, cám ơn bạn rất nhiều, đây đúng là thứ mình cần rồi. bạn có thể giải thích hàm đó được thành lập như thế nào không? mình đọc mà chẵn hiểu tại sao ra được kết quả đó nữa? Cám ơn bạn rất nhiều.
Xem cái này là hiểu ngay ấy mà. Nguồn GPEX
Đếm số lượng các ô trong một vùng thỏa một điều kiện cho trước.
Cú pháp: = COUNTIF(range, criteria)
Range : Dãy các ô để đếm, có thể là ô chứa số, text, tên, mảng, hay tham chiếu đến các ô chứa số. Ô rỗng sẽ được bỏ qua.

Criteria
: Điều kiện để đếm. Có thể ở dạng số, biểu thức, hoặc text. Ví dụ, criteria có thể là 32, "32", "> 32", hoặc "apple", v.v...
Lưu ý:

  • Có thể dùng các ký tự đại diện trong điều kiện: dấu ? đại diện cho một ký tự, dấu * đại diện cho nhiều ký tự (nếu như điều kiện là tìm những dấu ? hoặc *, thì gõ thêm dấu ~ ở trước dấu ? hay *)

  • Khi điều kiện để đếm là những ký tự, COUNTIF() không phân biệt chữ thường hay chữ hoa. View attachment 44790
 
Lần chỉnh sửa cuối:
ồ, cám ơn bạn rất nhiều, đây đúng là thứ mình cần rồi. bạn có thể giải thích hàm đó được thành lập như thế nào không? mình đọc mà chẵn hiểu tại sao ra được kết quả đó nữa? Cám ơn bạn rất nhiều.
COUNTIF thôi mà bạn!
Cứ tìm thấy "có" thì lấy ra
Vậy thôi!
Lưu ý: Hàm COUNTIF cho phép tìm theo ký tự đại diện, vì vậy mà trong công thức có đoạn "*"&$D$4&"*" ---> Nghĩa là "gần giống" với D4 là xem như "TÌM CÓ"
 
Ở đây có một lỗi tìm tàn. Ví dụ nhé
Tìm người có tên Lê Thành trong dữ liệu sau
Dữ liệu | Kết quả
Nguyễn Văn Xuyên + Lê Thành Lel | True
Lê Văn Bình | False
Lê Thành Lel + Lê Minh Hiếu | True
Nguyễn Đình Bảo + Lê Thành | True
 
Ở đây có một lỗi tìm tàn. Ví dụ nhé
Tìm người có tên Lê Thành trong dữ liệu sau
Dữ liệu | Kết quả
Nguyễn Văn Xuyên + Lê Thành Lel | True
Lê Văn Bình | False
Lê Thành Lel + Lê Minh Hiếu | True
Nguyễn Đình Bảo + Lê Thành | True
Đấy không hẳn là lỗi ---> Tôi thì cho rằng đây là LỢI THẾ
Như vậy ta có thể tìm được tất cả các từ có liên quan đến Lê Thành ---> Giống như tra từ điển vậy thôi!
Nói chung là còn tùy vào nhu cầu thực tế mới biết được đây là LỢI hay HẠI
 
Đấy không hẳn là lỗi ---> Tôi thì cho rằng đây là LỢI THẾ
Như vậy ta có thể tìm được tất cả các từ có liên quan đến Lê Thành ---> Giống như tra từ điển vậy thôi!
Nói chung là còn tùy vào nhu cầu thực tế mới biết được đây là LỢI hay HẠI
Yêu cầu của tác giả đã rõ ràng rồi đấy thôi. Tìm người này nhưng lại thấy cả những người khác. Trường hợp này chẳng có chỗ nào là lợi cả.
 
Yêu cầu của tác giả đã rõ ràng rồi đấy thôi. Tìm người này nhưng lại thấy cả những người khác. Trường hợp này chẳng có chỗ nào là lợi cả.
Không thể nói thế được!
Thế thì phải hỏi lại tác giả mới biết được là LỢI hay HẠI
Như tôi đã nói: Tùy nhu cầu
Làm sao bạn biết được họ tìm tên để làm cái giống gì mà dám khẳng định đây là LỖI
Nếu dữ liệu này chỉ là giả lập đê tìm công thức hợp lý thì bạn nghĩ sao?
 
như vậy thì làm sao để cho ra kết quả tuyệt đối chính xác đây ta? lỗi trên là rất tệ cho công việc sau này của mình, vì lỡ có thêm người tên "lê thành" hoặc "nguyễn văn" thì việc đếm như trên sẽ cho kết quả không chính xác rồi. có cao thủ nào có giải phải hoàn hảo cho vụ này thì ra tay cứu vớt với.Thanks!
 
như vậy thì làm sao để cho ra kết quả tuyệt đối chính xác đây ta? lỗi trên là rất tệ cho công việc sau này của mình, vì lỡ có thêm người tên "lê thành" hoặc "nguyễn văn" thì việc đếm như trên sẽ cho kết quả không chính xác rồi. có cao thủ nào có giải phải hoàn hảo cho vụ này thì ra tay cứu vớt với.Thanks!
Vậy ta dùng VBA, đồng ý không? (tôi thấy nó dể hơn công thức trong trường hợp này)
PHP:
Function FindFromString(TextValue As String, FindValue As String, Sep As String) As String
  Dim Pos As Long, Temp As String
  On Error Resume Next
  Temp = WorksheetFunction.Trim(TextValue)
  Temp = Replace(Temp, " " & Sep, Sep)
  Temp = Replace(Temp, Sep & " ", Sep)
  Pos = WorksheetFunction.Match(FindValue, Split(Temp, Sep), 0)
  If Pos Then FindFromString = FindValue
End Function
 

File đính kèm

Lần chỉnh sửa cuối:
Ah... Tìm được công thức rồi
Công thức cho cell D6:
PHP:
=IF(ISERROR(SEARCH("+"&$D$4&"+","+"&SUBSTITUTE(SUBSTITUTE($C6," +","+"),"+ ","+")&"+")),"",$D$4)
 

File đính kèm

Ah... Tìm được công thức rồi
Công thức cho cell D6:
PHP:
=IF(ISERROR(SEARCH("+"&$D$4&"+","+"&SUBSTITUTE(SUBSTITUTE($C6," +","+"),"+ ","+")&"+")),"",$D$4)
Như thế này sẽ gọn hơn:
Mã:
=IF(ISERROR(SEARCH("+ "&$D$4&" +","+ "&C6&" +")),"",$D$4)
 
Ah... Tìm được công thức rồi
Công thức cho cell D6:
PHP:
=IF(ISERROR(SEARCH("+"&$D$4&"+","+"&SUBSTITUTE(SUBSTITUTE($C6," +","+"),"+ ","+")&"+")),"",$D$4)
Công thức hơi phức tạp :D, có thể dùng công thức này cho nó dễ nhìn hơn chút
Mã:
=IF(SUBSTITUTE("+ "&C6&" +","+ "&$D$4&" +","")<>"+ "&C6&" +",$D$4,"")
Dạng tìm chính xác trong chuỗi này cũng đã được đề cập một số lần rồi mà, tuy nhiên phải tuân theo đúng chuẩn mà yêu cầu ban đầu đưa ra, còn không thì chịu.
 
Như thế này sẽ gọn hơn:
Mã:
=IF(ISERROR(SEARCH("+ "&$D$4&" +","+ "&C6&" +")),"",$D$4)
-----------------------------------
Công thức hơi phức tạp :D, có thể dùng công thức này cho nó dễ nhìn hơn chút
Mã:
=IF(SUBSTITUTE("+ "&C6&" +","+ "&$D$4&" +","")<>"+  "&C6&" +",$D$4,"")
Dạng tìm chính xác trong chuỗi này cũng đã được đề cập một số lần rồi mà, tuy nhiên phải tuân theo đúng chuẩn mà yêu cầu ban đầu đưa ra, còn không thì chịu.
Không được à nha!
Ai dám chắc 2 đầu dấu cộng sẽ là 2 khoảng trắng? Lở nó chẳng có khoẳng trắng nào thì sao? (kiểu vầy: Lê Thành+Nguyễn Văn Xuyên) ---> Thế nên mới cần đến SUBSTITUTE
Ngoài ra, cũng không dám chắc 2 đầu dấu cộng là mấy khoảng trắng ---> Thế nên thêm TRIM vào thì sẽ chắc ăn hơn
PHP:
=IF(ISERROR(SEARCH("+"&$D$4&"+","+"&SUBSTITUTE(SUBSTITUTE(TRIM($C6)," +","+"),"+ ","+")&"+")),"",$D$4)
Các bạn có ý gì khác để rút gọn không?
 
-----------------------------------

Không được à nha!
Ai dám chắc 2 đầu dấu cộng sẽ là 2 khoảng trắng? Lở nó chẳng có khoẳng trắng nào thì sao? (kiểu vầy: Lê Thành+Nguyễn Văn Xuyên) ---> Thế nên mới cần đến SUBSTITUTE
Ngoài ra, cũng không dám chắc 2 đầu dấu cộng là mấy khoảng trắng ---> Thế nên thêm TRIM vào thì sẽ chắc ăn hơn
PHP:
=IF(ISERROR(SEARCH("+"&$D$4&"+","+"&SUBSTITUTE(SUBSTITUTE(TRIM($C6)," +","+"),"+ ","+")&"+")),"",$D$4)
Các bạn có ý gì khác để rút gọn không?
bác xem ý kiến của em có lỗi gì không ?
=IF(ISERROR(FIND($D$4,C6,1)),"",$D$4)
vẫn con lỗi
 
Lần chỉnh sửa cuối:
bác xem ý kiến của em có lỗi gì không ?
=IF(ISERROR(FIND($D$4,C6,1)),"",$D$4)
vẫn con lỗi
Lỗi thì không có nhưng mà tìm không chính xác
Vụ này tác giả và bạn huuthang_bd có nói rồi mà
Ví dụ tại cell D4 bạn gõ chữ Lê Thành thì chổ nào có chữ này nó đều tìm tuốt (ví dụ Lê Thành Đạt nó cũng tìm luôn) ---> Tức là tìm không chính xác rồi
 
Web KT

Bài viết mới nhất

Back
Top Bottom