Các câu hỏi về hàm COUNTIF

Liên hệ QC
Countif là ngon rồi bạn cần gì nữa, có nhiều cách vd:một cách.
Mã:
=SUMPRODUCT(($A$1:$F$1=5)*1)
 
Đúng là dùng hàm có chứa tham số là văn bản, ta phải nhập đúng văn bản đó.
Có thể thay văn bản đó bằng 1 địa chỉ ô đang chứa văn bản cần tìm thì dễ hơn.
Ví dụ có danh sách tên trong vùng A1:A100 như dưới đây (có viết số hàng)
1 Nguyễn Thị Vân
2 Trần Nam An
---
100 Nguyễn Thị Vân
Ta cần đếm có bao nhiêu "Nguyễn Thị Vân", hoặc dùng công thức
=countif(A1:A100,"Nguyễn Thị Vân")
hoặc dùng công thức
=countif(A1:A100,A1)
Nếu cần sao chép, tham số đầu phải là địa chỉ tuyệt đối.
 
Lần chỉnh sửa cuối:
xây dựng 1 hàm kết sumproduct và countif

Làm thế nào để dếm có bao nhiêu aa và yz ở 2 cột A và B thỏa cho điều kiện trong khỏang thời gian được xác định I2 đến J2

Anh chị nào biết xin chỉ giúp - Cảm ơn
 

File đính kèm

  • thu.xls
    14.5 KB · Đọc: 17
Làm thế nào để dếm có bao nhiêu aa và yz ở 2 cột A và B thỏa cho điều kiện trong khỏang thời gian được xác định I2 đến J2

Anh chị nào biết xin chỉ giúp - Cảm ơn

Bạn chỉ cần dùng SUMPRODUCT là đủ rồi:
=SUMPRODUCT(--($A$2:$A$19="aa"),--($B$2:$B$19="yz"),--($C$2:$C$19>=$I2),--($C$2:$C$19<=$J2))
Hoặc
=SUMPRODUCT(($A$2:$A$19="aa")*($B$2:$B$19="yz")*($C$2:$C$19>=$I2)*($C$2:$C$19<=$J2))
Hoặc dùng SUM luôn cũng được (nhớ gõ công thức xong thì ấn Ctrl+Shift+Enter)
{=SUM(($A$2:$A$19="aa")*($B$2:$B$19="yz")*($C$2:$C$19>=$I2)*($C$2:$C$19<=$J2))}
Sau đó copy down công thức xuống nếu muốn xem nhiều giá trị từ ngày đến ngày tại các cột I, J.

Bạn xem thêm file đính kèm nhé!
 

File đính kèm

  • thu.xls
    15 KB · Đọc: 36
Lần chỉnh sửa cuối:
Hàm Countif

Xin hỏi ? Có cách nào để sử dụng hàm countif để đếm giá trị là số , mà không bị ảnh hưởng bởi định dạng kiểu số thập phân là dấu "," hoặc dấu "." . Ví dụ : đang sử dụng hàm đếm Countif(A1:A10 ; ">=6,2") , nếu chép công thức này sang máy khác mà định dạng kiểu số thập phân là 6.2 thì sẽ công thức sẽ bị sai . Làm cách nào để công thức luôn luôn đúng mà không cần phải định dạng lại .Xin được giúp đỡ , cảm ơn .
 
Bạn có thể dùng công thức để tạo ra các số không nguyên. Chẳng hạn: dùng 62/10 để tạo ra 6.2 (hoặc 6,2) không phụ thuộc vào thiết lập cụ thể của hệ điều hành.
=COUNTIF(A1:A10; ">=" & (62/10))
 
theo minh nghĩ định dạnh của 2 cell khác nhau, 1 dạng số, 1 dạng number nên khi đếm không được. bạn thử kiểm tra lại xem!
 
Xin hỏi ? Có cách nào để sử dụng hàm countif để đếm giá trị là số , mà không bị ảnh hưởng bởi định dạng kiểu số thập phân là dấu "," hoặc dấu "." . Ví dụ : đang sử dụng hàm đếm Countif(A1:A10 ; ">=6,2") , nếu chép công thức này sang máy khác mà định dạng kiểu số thập phân là 6.2 thì sẽ công thức sẽ bị sai . Làm cách nào để công thức luôn luôn đúng mà không cần phải định dạng lại .Xin được giúp đỡ , cảm ơn .
Bản chỉ cần viết hàm tác ra là được; theo như ví dụ của bạn, ta chỉ cầm viết: COUNTIF(A1:A10; ">=" & 6.2) khi đó sang máy khác 6.2 sẽ tự động chuyển thành 6,2
 
Countif bằng VBA như thế nào

Em thử viết một code để học như sau nhưng sai nè không chạy được
--> công việc là tự động countif lại mỗi lần tại cột B khi ta thêm dữ liệu vào cột A

Xin các Anh chỉ cho
Private Sub Worksheet_Change(ByVal Target As Range)
Dim er As Long
Dim tmp As Long

er = [A65000].End(xlUp).Row
For i = 1 To er
If Cells(i, 1) <> "" Then
tmp = Application.CountIf(Range("A1:A" & i), "A" & i)
Cells(i, 2) = tmp

Else: Exit Sub
End If
Next

End Sub
 

File đính kèm

  • Countif_VBA.xls
    28 KB · Đọc: 30
Lần chỉnh sửa cuối:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim er As Long
    er = [A65000].end(xlup).row
  
        For i = 1 To er
            If Cells(i,1) <> "" Then
                Cells(i,2)= Application.CountIf(Range("A1:A" & i), "A" & i)
             
              Else: Exit Sub
            End If
        Next
           
End Sub

Hãy sửa đoạn code trên thành:
[highlight=vb]
Private Sub Worksheet_Change(ByVal Target As Range)
Dim er As Long
er = [A65000].end(xlup).row
For i = 1 To er
If Cells(i,1) <> "" Then
Cells(i,2)= Application.WorksheetFunction.CountIf(Range("A1:A" & er), Range("A" & i)) ''<==Sửa chỗ này
Else: Exit Sub
End If
Next
End Sub[/highlight]

Lưu ý:
Đoạn code này của bạn:
.CountIf(Range("A1:A" & i),"A" & i)
1. Có lẽ chưa chính xác, vỉ khi biến i chạy thì vùng xác định (vùng tô đậm màu đỏ) để COUNTIF đúng ra không được "chạy" mới đúng! Do đó chỗ này đúng ra phải là Range("A1:A" & er)

2. Điều kiện đếm (vùng tô đậm màu xanh dương), theo như mình hiểu ý của bạn là Ô Ai chứ không phải là giá trị chuỗi "A"&i, đúng không bạn? Do đó chỗ này đúng ra phải là Range("A" & i)
 
Lần chỉnh sửa cuối:
Anh ơi code chạy vẫn chưa đúng anh à; ý em là như này
Ví dụ
Số bill------- tổng số lần lặp
0001-----------01
0002-----------02
0002-----------02
0005-----------03
0005-----------03
0005-----------03
--------------------------------
Cứ như vậy khi em cập nhật số bill mới vào nó sẽ ra tổng bill tại cột bên cạnh
Nhưng tổng số bill này chỉ là value thôi, không có công thức

Cám ơn ANh
 
Bạn có thể viết code giống như sau:
PHP:
Sub chay() Dim er As Long     er = [A65000].End(xlUp).Row         For i = 3 To er             If Cells(i, 1)  "" Then                 Cells(i, 2) = Application.CountIf(Range("A3:A" & er), Range("A" & i))                 Cells(i, 2).NumberFormat = "00"             End If         Next End Sub
Chú ý: Code này đặt trong Module đó. Thân.
 
Lần chỉnh sửa cuối:
Anh ơi code chạy vẫn chưa đúng anh à; ý em là như này
Ví dụ
Số bill------- tổng số lần lặp
0001-----------01
0002-----------02
0002-----------02
0005-----------03
0005-----------03
0005-----------03
--------------------------------
Cứ như vậy khi em cập nhật số bill mới vào nó sẽ ra tổng bill tại cột bên cạnh
Nhưng tổng số bill này chỉ là value thôi, không có công thức

Cám ơn ANh
Thêm 1 dk if nữa là ok
PHP:
k=0
if Worksheetfunction.CountIf(Range("A1:A" & i), "A" & i) > 1 then
Cells(i,2)=k
else
k=k+1
Cells(i,2)=k

end if
 
Anh ơi code chạy vẫn chưa đúng anh à; ý em là như này
Ví dụ
Số bill------- tổng số lần lặp
0001-----------01
0002-----------02
0002-----------02
0005-----------03
0005-----------03
0005-----------03
--------------------------------
Cứ như vậy khi em cập nhật số bill mới vào nó sẽ ra tổng bill tại cột bên cạnh
Nhưng tổng số bill này chỉ là value thôi, không có công thức
Không biết chưa đúng ý bạn chỗ nào!? Mình nghĩ vấn đề còn lại là format mà thôi! Code mình nó cho ra dữ liệu kiểu số [1,2,3], bạn có thể format lại cột B để có dữ liệu như ý [01,02,03...]
Thêm vào đó, bạn nên làm giống Po_Pikachu:
Chép code vào Module và xử lý chạy code này khi có sự kiện Worksheet_SelectionChange thì hay hơn! Code này của bạn, mình để vào sự kiện Worksheet_Change thì máy nó treo luôn.

To: anh THUNGHI: vấn đề này đâu cần thêm If và biến k nữa đâu anh! COUNTIF là đủ mà!

Xin xem file đính kèm!
 

File đính kèm

  • Book1.xls
    24 KB · Đọc: 24
Lần chỉnh sửa cuối:
Không biết chưa đúng ý bạn chỗ nào!? Mình nghĩ vấn đề còn lại là format mà thôi! Code mình nó cho ra dữ liệu kiểu số [1,2,3], bạn có thể format lại cột B để có dữ liệu như ý [01,02,03...]
Thêm vào đó, bạn nên làm giống Po_Pikachu:
Chép code vào Module và xử lý chạy code này khi có sự kiện Worksheet_SelectionChange thì hay hơn! Code này của bạn, mình để vào sự kiện Worksheet_Change thì máy nó treo luôn.

To: anh THUNGHI: vấn đề này đâu cần thêm If và biến k nữa đâu anh! COUNTIF là đủ mà!
Thú thật mình cũng không đọc kỹ nhưng mà theo như yêu cầu là nếu nhập thêm ma mới thì có đếm còn không thì vẫn lấy số đếm cũ thì làm vậy cho lẹ.
 
Cám ơn bác Pi_kachu vô cùng
Code của bác chạy rất ổn nhưng
Code bác cho vào Module thì mỗi lần cập nhật em lại chạy code à
----------
Em muốn mỗi lần cập nhật dữ liệu vào thì thì nó chạy luôn (sự kiện change đó)
--------------
To bác Thu Nghi đáng kính

Không hiểu sao khi chạy code của bác máy em cứ treo ngược cành cây bác ạ

Mong được sự chỉ bảo từ các bác

St-Lu!
 
Lần chỉnh sửa cuối:
Cám ơn bác Pi_kachu vô cùng
Code bác cho vào Module thì mỗi lần cập nhật em lại chạy code à
----------
Em muốn mỗi lần cập nhật dữ liệu vào thì thì nó chạy luôn (sự kiện change đó)
Bạn xem file mình vừa attached tại bài #6 để biết cách làm nhé!
--------------
To bác Thu Nghi đáng kính
Không hiểu sao khi chạy code của bác máy em cứ treo ngược cành cây bác ạ
Mong được sự chỉ bảo từ các bác
Mình đã nói là đặt vào sự kiện change thì không được mà, không biết phải giải thích làm sao nữa!
 
Lần chỉnh sửa cuối:
Thì mình làm vẫn chạy ngon trơn mà. Chỉ là ý của tác giả diễn tả chẳng hiểu gì cả? Đây là file mình đã làm theo Worksheet_SelectionChange nhưng đâu thấy treo gì đâu. Còn code trên là chạy trên Module mà!
PHP:
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim er As Long     er = [A65000].End(xlUp).Row     luu = Application.CountIf(Range("A3:A" & er), Range("A3"))     k = 1         For i = 3 To er                 m = Application.CountIf(Range("A3:A" & er), Range("A" & i))                 If m = luu Then                 Cells(i, 2) = k                 Cells(i, 2).NumberFormat = "00"                 Else                 k = k + 1                 Cells(i, 2) = k                 Cells(i, 2).NumberFormat = "00"                 luu = m                 End If         Next End Sub
File: http://www.mediafire.com/?4vttdmtlwrz A hiểu rồi! Nhưng trường hợp hai loại dữ liệu khác nhau nhưng có cùng số lần giống nhau thì viết làm sao nhỉ? Thân.
 
Lần chỉnh sửa cuối:
PHP:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim er As Long
    er = [A65000].End(xlUp).Row
    luu = Application.CountIf(Range("A3:A" & er), Range("A3"))
    k = 1
        For i = 3 To er
                m = Application.CountIf(Range("A3:A" & er), Range("A" & i))
                If m = luu Then
                Cells(i, 2) = k
                Cells(i, 2).NumberFormat = "00"
                Else
                k = k + 1
                Cells(i, 2) = k
                Cells(i, 2).NumberFormat = "00"
                luu = m
                End If
        Next
End Sub
Po_Pikachu ơi! Code cũ bạn viết nó ngắn và chính xác hơn nhiều so với code trên đây, sao hổng xài vậy?

Hãy giả sử đơn giản ta dùng công thức countif trên sheet đi, sẽ thấy:

|A|B|C
1|001|=Countif(A1:A$10,$A1)|=01
2|002|=Countif(A1:A$10,$A2)|=02
3|002|=Countif(A1:A$10,$A3)|=02
4|003|=Countif(A1:A$10,$A4)|=03
5|003|=Countif(A1:A$10,$A5)|=03
6|003|=Countif(A1:A$10,$A6)|=03
7|005|=Countif(A1:A$10,$A7)|=04
8|005|=Countif(A1:A$10,$A8)|=04
9|005|=Countif(A1:A$10,$A9)|=04
10|005|=Countif(A1:A$10,$A10)|=04
Từ đó suy ra code VBA cũng vậy thôi!
 
Lần chỉnh sửa cuối:
Bạn xem file mình vừa attached tại bài #6 để biết cách làm nhé!
Mình đã nói là đặt vào sự kiện change thì không được mà, không biết phải giải thích làm sao nữa!

Anh Kiệt ơi
Nếu file của em gần 20 ngàn dòng thì có lên sử dụng code này không?
------------
Em chưa test vì số liệu cập nhật sẽ tăng dần mỗi ngày


Cám ơn Anh
 
Web KT
Back
Top Bottom