Mình dùng COUNTIF đếm ngày thì ra kết quả đúng, nhưng VBA thì sai (1 người xem)

Liên hệ QC

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

bebo021999

Thành viên gạo cội
Tham gia
26/1/11
Bài viết
5,957
Được thích
8,746
Giới tính
Nam
Nghề nghiệp
GPE
Công thức trên sheet ra kết quả đúng (=9):
=COUNTIF(A3:A13,"<="&C1)
Với A3:A13 là dãy ngày, C1 là ngày điều kiện
Code:
Mã:
Sub a()
Dim adate As Range
Dim n As Long
Set adate = Range("A3:A13")
n = WorksheetFunction.CountIf(ngay, "<=" & Range("C1"))
Debug.Print n
End Sub
Kết quả sai: 11

Mọi người kiểm tra giúp
 

File đính kèm

Chắc anh bị nhầm chỗ này:

Mã:
[FONT=Verdana]Sub a()[/FONT]
[FONT=Verdana]Dim adate As Range[/FONT]
[FONT=Verdana]Dim n As Long[/FONT]
[FONT=Verdana]Set adate = Range("A3:A13")[/FONT]
[FONT=Verdana]n = WorksheetFunction.CountIf([COLOR=#ff0000][B]ngay[/B][/COLOR], "<=" & Range("C1"))[/FONT]
[FONT=Verdana]Debug.Print n[/FONT]
[FONT=Verdana]End Sub[/FONT]


----------------------------------------------------------------------------
Mã:
Sub a()
Dim adate As Range
Dim n As Long
Set adate = Range("A3:A13")
n = WorksheetFunction.CountIf([B][COLOR=#ff0000]adate[/COLOR][/B], "<=" & Range("C1"))
Debug.Print n
End Sub
 
Upvote 0
Lúc đầu mình sửa ngay thanh adate mà quên sửa trong countif. Tuy nhiên sửa xong vẫn vậy Phong ơi
 
Upvote 0
Công thức trên sheet ra kết quả đúng (=9):
=COUNTIF(A3:A13,"<="&C1)
Với A3:A13 là dãy ngày, C1 là ngày điều kiện
Code:
Mã:
Sub a()
Dim adate As Range
Dim n As Long
Set adate = Range("A3:A13")
n = WorksheetFunction.CountIf(ngay, "<=" & Range("C1"))
Debug.Print n
End Sub
Kết quả sai: 11

Mọi người kiểm tra giúp
Set adate = Range("A3:A13")
bạn sửa lại
Set ngay = Range("A3:A13")
kết quả là 9
 
Upvote 0
Công thức trên sheet ra kết quả đúng (=9):
=COUNTIF(A3:A13,"<="&C1)
Với A3:A13 là dãy ngày, C1 là ngày điều kiện
Code:
Mã:
Sub a()
Dim adate As Range
Dim n As Long
Set adate = Range("A3:A13")
n = WorksheetFunction.CountIf(ngay, "<=" & Range("C1"))
Debug.Print n
End Sub
Kết quả sai: 11

Mọi người kiểm tra giúp

tôi cũng từng bị cái này, không biết tại sao
Mã:
Sub a()
Dim adate As Range
Dim n As Long
Set adate = Range("A3:A13")
n = WorksheetFunction.CountIf(adate, "<=" & Range("C1").[COLOR=#ff0000]Value2[/COLOR])
Debug.Print n
End Sub
=======
có thể do định dạng ngày của mình là dạn "chế", anh thử set lại theo đúng chuẩn "mẽo" xem
 
Lần chỉnh sửa cuối:
Upvote 0
Sao mình lại sai nhỉ, vẫn ra 11? Mà nếu thay Range("C1") bằng CLng(Range("C1")) thì ra 9

Hình như nó hiểu là mm/dd/yyy.

Untitled.jpg
 
Upvote 0
Sao mình lại sai nhỉ, vẫn ra 11? Mà nếu thay Range("C1") bằng CLng(Range("C1")) thì ra 9

Hình như nó hiểu là mm/dd/yyy.

View attachment 165039
Nói chung thì code (nhất là Advanced Filter, Auto Filter và vài thứ khác) mà có liên quan đến ngày tháng thì cứ lồng CDbl, CLng.. vào cho nó chắc
Chuyện này đã nói từ lâu lắm rồi
 
Upvote 0
Web KT

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

Back
Top Bottom