Xin giúp đỡ về đếm nhiều ký tự bị trùng (1 người xem)

  • Thread starter Thread starter nthxe
  • Ngày gửi Ngày gửi

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

nthxe

Trình còi
Tham gia
14/6/08
Bài viết
260
Được thích
114
Chào các anh chị em,

Tôi có 1 cột gồm tên của các bưu điện như Hà Nội, Hà Nam, Hà Tây, Hà Tĩnh. Một bưu điện có thể xuất hiện nhiều lần ( ở nhiều dòng khác nhau)

Mục đích:

Dùng hàm nào đó để đếm số bưu điện có trong cột kia, mỗi bưu điện chỉ tính là 1 chứ ko tính theo số lần xuất hiện.

Kính mong anh chị em giúp đỡ

Xin cảm ơn
 

File đính kèm

Công thức mảng: =SUM(1/COUNTIF(A2:A23,A2:A23)) kết thúc với tổ hợp phím Ctrl+Shift+Enter
 
Không được bạn ơi, báo lỗi #DIV/0!
 
Nhờ anh chị giải thích giúp em, theo cách làm của anh leonguyenz em chưa hiểu:
-Countif (vùng, điều kiện) là hàm dùng để đếm các ô trong vùng thỏa điều kiện, vậy điều kiện ở đây chọn nguyên vùng A2:A23 có nghĩa là điều kiện gì ạ?
Nếu em dùng công thức mảng chỉ với hàm countif như anh leonguyenz thì kết quả là 4
Vậy hàm sum(1/countif()) là sao ạ? Em muốn hỏi mục đích của nó?
Mọi người có thể giải thích giúp em ý nghĩa của tổ hợp hàm này không ạ?
Em cảm ơn ạ!
 
Nhờ anh chị giải thích giúp em, theo cách làm của anh leonguyenz em chưa hiểu:
-Countif (vùng, điều kiện) là hàm dùng để đếm các ô trong vùng thỏa điều kiện, vậy điều kiện ở đây chọn nguyên vùng A2:A23 có nghĩa là điều kiện gì ạ?
Nếu em dùng công thức mảng chỉ với hàm countif như anh leonguyenz thì kết quả là 4
Vậy hàm sum(1/countif()) là sao ạ? Em muốn hỏi mục đích của nó?
Mọi người có thể giải thích giúp em ý nghĩa của tổ hợp hàm này không ạ?
Em cảm ơn ạ!

Anh (Chị) có thể xem link của bài viết sau ạ
http://www.giaiphapexcel.com/forum/...mảng-SUM(1-COUNTIF(B2-B12-B2-B12))-trong-file
 
Cảm ơn bác Leonguyenz, hàm của bác chạy ngon lành nhưng nếu trong vùng dữ liệu cần đếm có 1 ô trống thì lỗi. Bác xem sửa giúp với.

Và nữa, sao cái Ctrl + Shift + Enter ở máy em nó ko chạy nhỉ, chính xác là 5% chạy, năm thì mười họa mặc dù em đã ấn đồng thời
 
Lần chỉnh sửa cuối:
... sao cái Ctrl + Shift + Enter ở máy em nó ko chạy nhỉ, chính xác là 5% chạy, năm thì mười họa mặc dù em đã ấn đồng thời
Bạn dùng công thức này thử xem:
=SUMPRODUCT(1/COUNTIF(A2:A23,A2:A23))
Cảm ơn bác Leonguyenz, hàm của bác chạy ngon lành nhưng nếu trong vùng dữ liệu cần đếm có 1 ô trống thì lỗi. Bác xem sửa giúp với.
Bạn có thể tạo cột phụ với công thức này: =IF(COUNTIF(A$2:A23,A2)=1,1,0) fill xuống và cộng lại.
Thân.
 
Bạn dùng công thức này thử xem:
=SUMPRODUCT(1/COUNTIF(A2:A23,A2:A23))
Không được nếu có cell trống bạn ạ
Bạn có thể tạo cột phụ với công thức này: =IF(COUNTIF(A$2:A23,A2)=1,1,0) fill xuống và cộng lại.
Thân.

Do yêu cầu đặc thù không thể thêm cột nào nữa bạn ạ. Nếu không dùng unique trong advance filter cũng được mà
 
Lần chỉnh sửa cuối:
Bạn dùng công thức dài dài này vậy. Kết thúc bằng Ctrl + Shift + Enter
=COUNT(IF(MATCH(A2:A23,A2:A23,0)=ROW(INDIRECT("1:"&ROWS(A2:A23))),ROW(INDIRECT("1:"&ROWS(A2:A23))),""))
 
Nếu bạn biết về VBA- sử dụng hàm tự khai báo thì bạn có thể tham khảo hàm sau :

PHP:
Public Function count_unique(Rng As Range) As Long   
Dim item, tmparr, arr(), tmp    
Dim n As Long        
           tmparr = Rng        
           With CreateObject("scripting.dictionary")                
                  For Each item In tmparr                    
                          tmp = Trim(CStr(item))                 
                          If Len(tmp) And Not .exists(tmp) Then                       
                                n = n + 1                      
                               .Add tmp, n                    
                          End If                
                  Next                
                  count_unique = .Count        
              End With
End Function
 
Nếu bạn biết về VBA- sử dụng hàm tự khai báo thì bạn có thể tham khảo hàm sau :

PHP:
Public Function count_unique(Rng As Range) As Long   
Dim item, tmparr, arr(), tmp    
Dim n As Long        
           tmparr = Rng        
           With CreateObject("scripting.dictionary")                
                  For Each item In tmparr                    
                          tmp = Trim(CStr(item))                 
                          If Len(tmp) And Not .exists(tmp) Then                       
                                n = n + 1                      
                               .Add tmp, n                    
                          End If                
                  Next                
                  count_unique = .Count        
              End With
End Function
Trong code này: n= n+1 để làm cái gì vậy bạn?
Ngoài ra, đã có tình viết hàm COUNTUNIQUE thì phải tính đến trường hợp phân biệt HOA thường để người dùng tùy chọn (tôi thì xem "A" và "a" là như nhau nhưng người khác có thể xem chúng là khác nhau)
 
Nếu chỉ đếm tỉnh bằng VBA thì dùng hàm như sau cho gọn nhẹ:

Mã:
Function Count_Unique(ByVal Rg As Range) As Long
Dim ch As String, n As Long, Cl As Range
For Each Cl In Rg.Cells
If InStr(1, ch, Cl.Value) = 0 Then
ch = ch & ";" & Cl.Value
n = n + 1
End If
Next
Count_Unique = n
End Function
 

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

Back
Top Bottom