Hàm đếm text? (1 người xem)

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

dotuanviet1981

Thành viên mới
Tham gia
29/2/08
Bài viết
20
Được thích
12
A1 : Long, Việt, Đạt, Khánh
A2 : Huệ, Hợp, Yến
A3 : Yến, Long, Việt
A4 : Khánh, Huệ, Hợp
A5 : Khánh, Nam, Đạt
A6 : Hợp, Việt, Long
A7 : Đạt, Yến, Dung
A8 : Dung, Long, Yến
A9 : Đại, Thứ, Nam
A10 : Hạnh, Đạt, Yến


A12 [tên người]
A13 Công thức???

Mình có một câu hỏi thế này rất mong được giải đáp:
Đặt công thức như thế nào cho ô A12 để mỗi khi thay đổi tên người ở ô A12 thì ô A13 thể hiện tổng số ô chứa tên người đó?

Cảm ơn trước!
 
Lần chỉnh sửa cuối:
Bạn dùng hàm countif() là được
Tại ô A13 bạn nhập công thức sau:
=Countif(A1:A10,A12)
 
A1 : Long, Việt, Đạt, Khánh
A2 : Huệ, Hợp, Yến
A3 : Yến, Long, Việt
A4 : Khánh, Huệ, Hợp
A5 : Khánh, Nam, Đạt
A6 : Hợp, Việt, Long
A7 : Đạt, Yến, Dung
A8 : Dung, Long, Yến
A9 : Đại, Thứ, Nam
A10 : Hạnh, Đạt, Yến


A12 [tên người]
A13 Công thức???

Mình có một câu hỏi thế này rất mong được giải đáp:
Đặt công thức như thế nào cho ô A12 để mỗi khi thay đổi tên người ở ô A12 thì ô A13 thể hiện tổng số ô chứa tên người đó?

Cảm ơn trước!
Bạn nhập công thức này thử xem
=COUNTIF(A1:A10,"*"&A12&"*")
 
Bạn dùng hàm countif() là được
Tại ô A13 bạn nhập công thức sau:
=Countif(A1:A10,A12)

Mình đã điền công thức này rồi, nhưng không được. Countif chỉ nhận dạng ô chứa duy nhất cái tên đó thôi.
Trong trường hợp này kết quả với cái tên nào cũng bằng 0 bạn ạ.
 
Bạn nhập công thức này thử xem
=COUNTIF(A1:A10,"*"&A12&"*")

:clap2:Được rồi bạn ạ, cảm ơn bạn rất nhiều! 2 dấu sao là để nói cho Countif hiểu đoạn text đó nằm trong một đoạn text khác phải ko? Cảm ơn bạn lần nữa:yahoo:

Không đơn giản thế đâu nha bác
Công thức này sẽ nhận lầm tên An với tên Anh đấy nhé
Tạm thời mình chỉ áp dụng với các tên khác nhau hoàn toàn.
Nhưng có cách nào khắc phục được không?
 
Chỉnh sửa lần cuối bởi điều hành viên:
Tạm thời mình chỉ áp dụng với các tên khác nhau hoàn toàn.
Nhưng có cách nào khắc phục được không?
Đương nhiên được!
- Giả định rằng bạn phân cách tên với nhau bằng dấu phẩy nha
- Dấu phẩy này luôn nằm sát với tên
Tôi tạm dùng công thức:
PHP:
=(SUMPRODUCT(LEN(Tmp))-SUMPRODUCT(LEN(SUBSTITUTE(Tmp,$A$12&",",""))))/(LEN($A$12)+1)
Với Tmp là name đã đặt trước trong Define Name
PHP:
=Sheet1!$A$1:$A$10&","
 

File đính kèm

@ ndu96081631: Hình như "chú" cũng lớn tuổi rồi:
Cháu có thêm câu hỏi này nhé:
1. Trường hợp ko phân cách bằng dấu phảy mà mỗi tên người trên một dòng trong ô (Alt + Enter) thì làm thế nào?
2. Cháu hiểu như sau:
Hàm LEN: Đếm số ký tự trong ô
Hàm SUBSTITUTE: thay thế một đoạn text ngắn nằm trong một đoạn text dài.
Hàm SUMPRODUCT: Cháu chưa hiểu?

Nếu có thời gian, chú giải thích ý nghĩa của hàm trên giúp cháu nhé, theo cách dân giã dễ hiểu í. Cháu đọc hướng dẫn bằng TA mờ mắt mà cứ loạn lên. Mà cháu lại đang cần gấp.
 
Lần chỉnh sửa cuối:
@ ndu96081631: Hình như "chú" cũng lớn tuổi rồi:
Cháu có thêm câu hỏi này nhé:
1. Trường hợp ko phân cách bằng dấu phảy mà mỗi tên người trên một dòng trong ô (Alt + Enter) thì làm thế nào?
2. Cháu hiểu như sau:
Hàm LEN: Đếm số ký tự trong ô
Hàm SUBSTITUTE: thay thế một đoạn text ngắn nằm trong một đoạn text dài.
Hàm SUMPRODUCT: Cháu chưa hiểu?

Nếu có thời gian, chú giải thích ý nghĩa của hàm trên giúp cháu nhé, theo cách dân giã dễ hiểu í. Cháu đọc hướng dẫn bằng TA mờ mắt mà cứ loạn lên. Mà cháu lại đang cần gấp.
tải quyển hàm này về mà học này ;
http://www.4shared.com/file/53534679/82edb869/Excel_Function_and_Formulas.html
 
Đương nhiên được!
- Giả định rằng bạn phân cách tên với nhau bằng dấu phẩy nha
- Dấu phẩy này luôn nằm sát với tên
Tôi tạm dùng công thức:
PHP:
=(SUMPRODUCT(LEN(Tmp))-SUMPRODUCT(LEN(SUBSTITUTE(Tmp,$A$12&",",""))))/(LEN($A$12)+1)
Với Tmp là name đã đặt trước trong Define Name
PHP:
=Sheet1!$A$1:$A$10&","
Hình như vẫn chưa an toàn, thử thay ong, ung vào cell A12 xem, công thức nó ....đếm tuốt
Thật ra dùng công thức đếm cũng ổn thôi, còn muốn "chắc phé" thì dùng Vba "xử" nó , nếu dữ liệu như trên có thể xài cái này
Mã:
Public Function dem(Vung As Range, Dk As Range) As Integer
  Dim Cll, Kq, Arr, i
    For Each Cll In Vung
       Cll = Replace(Cll, " ", "")
       Arr = Split(Cll, ",")
            For i = 0 To UBound(Arr)
                If Arr(i) = Dk Then Kq = Kq + 1
            Next
     Next
dem = Kq
End Function
Cháu có thêm câu hỏi này nhé:
1. Trường hợp ko phân cách bằng dấu phảy mà mỗi tên người trên một dòng trong ô (Alt + Enter) thì làm thế nào?
Nếu dữ liệu của bạn nằm cùng cell và dùng Alt + Enter thì sử dụng tạm code này xem sao
Mã:
Public Function dem1(Vung As Range, Dk As Range) As Integer
  Dim Cll, Kq, Arr, i
    For Each Cll In Vung
       Arr = Split(Cll, Chr(10))
            For i = 0 To UBound(Arr)
                If Arr(i) = Dk Then Kq = Kq + 1
            Next
     Next
dem1 = Kq
End Function
 

File đính kèm

Lần chỉnh sửa cuối:
Hình như vẫn chưa an toàn, thử thay ong, ung vào cell A12 xem, công thức nó ....đếm tuốt
Thật ra dùng công thức đếm cũng ổn thôi, còn muốn "chắc phé" thì dùng Vba "xử" nó , nếu dữ liệu như trên có thể xài cái này
Đúng là có sai sót
Vậy ta sửa lại tí:
Tmp =". "&Sheet1!$A$1:$A$10&","
Công thức:
=(SUMPRODUCT(LEN(Tmp))-SUMPRODUCT(LEN(SUBSTITUTE(Tmp,", "&$A$12&",",""))))/(LEN($A$12)+3)
Ngoài ra, nếu anh muốn xây dựng UDF thì em nghĩ anh phải thêm 1 tham số nữa trong hàm, đó là DẤU PHÂN CÁCH ---> Dấu này dùng để phân cách các WORD với nhau
---------------------
@ ndu96081631: Hình như "chú" cũng lớn tuổi rồi:
Cháu có thêm câu hỏi này nhé:
1. Trường hợp ko phân cách bằng dấu phảy mà mỗi tên người trên một dòng trong ô (Alt + Enter) thì làm thế nào?
.
Công thức của tôi, chổ nào có dấu phẩy thì thay bằng CHAR(10)
Cụ thế nằm trong file CountWord_2 đấy
 

File đính kèm

Đúng là có sai sót
Vậy ta sửa lại tí:
Tmp =". "&Sheet1!$A$1:$A$10&","
Công thức:
=(SUMPRODUCT(LEN(Tmp))-SUMPRODUCT(LEN(SUBSTITUTE(Tmp,", "&$A$12&",",""))))/(LEN($A$12)+3)
Ngoài ra, nếu anh muốn xây dựng UDF thì em nghĩ anh phải thêm 1 tham số nữa trong hàm, đó là DẤU PHÂN CÁCH ---> Dấu này dùng để phân cách các WORD với nhau
---------------------

Công thức của tôi, chổ nào có dấu phẩy thì thay bằng CHAR(10)
Cụ thế nằm trong file CountWord_2 đấy
Ngay trong file CountWord của bạn. Nếu tôi nhập vào các tên: Long, Huệ, Yến, Khánh,... thì kết quả sai. Cái này do dữ liệu của bạn có khoản trắng ở đầu mỗi cell và trong name bạn thêm dấu chấm (.) trong khi dữ liệu lại là dấu phẩy (,).
Công thức này có lẽ gọn hơn một chút.
Mã:
=SUMPRODUCT(--NOT(ISERROR(FIND(", "&A12&",",", "&A1:A10&","))))
Lưu ý: Công thức này chỉ dùng cho trường hợp mỗi tên chỉ xuất hiện một lần trong một ô. Nếu trong một ô có một tên xuất hiện nhiều hơn một lần thì không dùng được công thức này.
 

File đính kèm

Lần chỉnh sửa cuối:
Ngay trong file CountWord của bạn. Nếu tôi nhập vào các tên: Long, Huệ, Yến, Khánh,... thì kết quả sai. Cái này do dữ liệu của bạn có khoản trắng ở đầu mỗi cell và trong name bạn thêm dấu chấm (.) trong khi dữ liệu lại là dấu phẩy (,).
Công thức này có lẽ gọn hơn một chút.
Mã:
=SUMPRODUCT(--NOT(ISERROR(FIND(", "&A12&",",", "&A1:A10&","))))
Lưu ý: Công thức này chỉ dùng cho trường hợp mỗi tên chỉ xuất hiện một lần trong một ô. Nếu trong một ô có một tên xuất hiện nhiều hơn một lần thì không dùng được công thức này.
Dấu chấm là do sơ sót khi gõ bàn phím thôi
Còn vụ khoảng trắng, tôi nghĩ cho thêm hàm TRIM vào name là được
Công thức tuy có dài nhưng được cái trong cell bị trùng tên cũng đếm được luôn
--------------
Ái chà! Chưa hình dung ra còn lỗi nào nữa không (vì nhập liệu mà sai thì.. vô chừng lắm)
 

File đính kèm

Dấu chấm là do sơ sót khi gõ bàn phím thôi
Còn vụ khoảng trắng, tôi nghĩ cho thêm hàm TRIM vào name là được
Công thức tuy có dài nhưng được cái trong cell bị trùng tên cũng đếm được luôn
--------------
Ái chà! Chưa hình dung ra còn lỗi nào nữa không (vì nhập liệu mà sai thì.. vô chừng lắm)

SUMPRODUCT sao không dùng thừa số chung, thế này:
PHP:
=SUMPRODUCT(LEN(Tmp)-LEN(SUBSTITUTE(Tmp,", "&$A$12&",","")))/(LEN($A$12)+3)
 

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

Back
Top Bottom