Tính số lần xuất hiện của 1 mã sản phẩm trong khỏang thời gian !! Help!

Liên hệ QC

guitarnguyen1989

Thành viên chính thức
Tham gia
31/7/16
Bài viết
59
Được thích
7
Xin chào A/C !

- Vấn đề là mình cần tính số lần xuất hiện của một mã hàng trong một khỏang thời gian ,Dùng Countifs thì mình làm được.
Tập tành viết code thì lỗi nhờ các anh chị giúp

File đính kèm :
- Range("G1") = ngày đầu tháng , Range("G2") = ngày cuối tháng
- Range ("F5") nhập mã sản phẩm
- Range ("G5") tính số lần xuất hiện


Cảm ơn !!!
 

File đính kèm

  • Test.xlsm
    136.7 KB · Đọc: 19
Xin chào A/C !

- Vấn đề là mình cần tính số lần xuất hiện của một mã hàng trong một khỏang thời gian ,Dùng Countifs thì mình làm được.
Tập tành viết code thì lỗi nhờ các anh chị giúp

File đính kèm :
- Range("G1") = ngày đầu tháng , Range("G2") = ngày cuối tháng
- Range ("F5") nhập mã sản phẩm
- Range ("G5") tính số lần xuất hiện


Cảm ơn !!!
COUNTIFS:
Mã:
=COUNTIFS(B2:B8704,F5,A2:A8704,">="&G1,A2:A8704,"<="&G2)
Sry, chưa đọc kỹ yêu cầu.
 
Lần chỉnh sửa cuối:
Upvote 0
Xin chào A/C !

- Vấn đề là mình cần tính số lần xuất hiện của một mã hàng trong một khỏang thời gian ,Dùng Countifs thì mình làm được.
Tập tành viết code thì lỗi nhờ các anh chị giúp

File đính kèm :
- Range("G1") = ngày đầu tháng , Range("G2") = ngày cuối tháng
- Range ("F5") nhập mã sản phẩm
- Range ("G5") tính số lần xuất hiện


Cảm ơn !!!
Ban test code dưới đây
Mã:
Sub test()
Dim ngaydauthang As Date, ngaycuoithang As Date, lastrow As Long, mahang As Variant

Dim i As Long

ngaydauthang = Sheet1.Range("G1")
ngaycuoithang = Sheet1.Range("G2")
mahang = Sheet1.Range("F5")
With Sheet1
    .Range("G5") = 0
    lastrow = Cells(Rows.Count, "B").End(xlUp).Row
    For i = 2 To lastrow
        If .Range("A" & i) >= ngaydauthang And .Range("A" & i) <= ngaycuoithang Then
            If .Range("B" & i) = mahang Then
                .Range("G5") = .Range("G5") + 1
            End If
        End If
    Next i
'Sheet1.Range("G5") = Application.WorksheetFunction.CountIfs(.Range("B2:B" & lastrow), mahang, _
'.Range("A2:A" & lastrow), "<=" & ngaycuoithang) ', .Range("A2:A" & lastrow), ">=" & ngaydauthang)
End With
End Sub
 
Upvote 0
Ban test code dưới đây
Mã:
Sub test()
Dim ngaydauthang As Date, ngaycuoithang As Date, lastrow As Long, mahang As Variant

Dim i As Long

ngaydauthang = Sheet1.Range("G1")
ngaycuoithang = Sheet1.Range("G2")
mahang = Sheet1.Range("F5")
With Sheet1
    .Range("G5") = 0
    lastrow = Cells(Rows.Count, "B").End(xlUp).Row
    For i = 2 To lastrow
        If .Range("A" & i) >= ngaydauthang And .Range("A" & i) <= ngaycuoithang Then
            If .Range("B" & i) = mahang Then
                .Range("G5") = .Range("G5") + 1
            End If
        End If
    Next i
'Sheet1.Range("G5") = Application.WorksheetFunction.CountIfs(.Range("B2:B" & lastrow), mahang, _
'.Range("A2:A" & lastrow), "<=" & ngaycuoithang) ', .Range("A2:A" & lastrow), ">=" & ngaydauthang)
End With
End Sub
Có cách nao tăng tốc độ code dc hok ta ... Dữ liệu của mình hơn 5 năm khoảng 400.000 dòng ... !!!!
 
Upvote 0
Có cách nao tăng tốc độ code dc hok ta ... Dữ liệu của mình hơn 5 năm khoảng 400.000 dòng ... !!!!
Có lẽ thế này là được. Nếu còn chậm thì sẽ hiệu chỉnh sau
Mã:
Sub test()
Dim Ngaydauthang As Date, Ngaycuoithang As Date, Lastrow As Long, Mahang As Variant
Dim Mang As Variant
Dim i As Long, k As Long
With Sheet1
    Ngaydauthang = .Range("G1")
    Ngaycuoithang = .Range("G2")
    Mahang = .Range("F5")
    Lastrow = Cells(Rows.Count, "B").End(xlUp).Row
    Mang = .Range("A1", "B" & Lastrow)

    For i = 2 To Lastrow
        If Mang(i, 1) >= Ngaydauthang And Mang(i, 1) <= Ngaycuoithang Then
            If Mang(i, 2) = Mahang Then
                k = k + 1
            End If
        End If
    Next i
    
    .Range("G5") = k
End With
End Sub
 
Upvote 0
Thử code sau xem:
Mã:
Sub CountMH()
Dim ngaydauthang As Date, ngaycuoithang As Date, mahang As String
Dim i As Long, Cn As Long, myArr()
myArr = Sheet1.Range("A2:B" & Sheet1.Range("A1000000").End(xlUp).Row).Value
ngaydauthang = Sheet1.Range("G1")
ngaycuoithang = Sheet1.Range("G2")
mahang = Sheet1.Range("F5").Value
For i = 1 To UBound(myArr, 1)
    If myArr(i, 1) >= ngaydauthang And _
        myArr(i, 1) <= ngaycuoithang And myArr(i, 2) = mahang Then Cn = Cn + 1
Next i
Sheet1.Range("G5") = Cn
End Sub
 
Upvote 0
Xin chào A/C !

- Vấn đề là mình cần tính số lần xuất hiện của một mã hàng trong một khỏang thời gian ,Dùng Countifs thì mình làm được.
Tập tành viết code thì lỗi nhờ các anh chị giúp

File đính kèm :
- Range("G1") = ngày đầu tháng , Range("G2") = ngày cuối tháng
- Range ("F5") nhập mã sản phẩm
- Range ("G5") tính số lần xuất hiện


Cảm ơn !!!
Dữ liệu ngày lung tung, không thể ra kết quả đúng
Nếu có dữ liệu gốc chưa qua chế biến có thể chạy nhanh một chút
 
Upvote 0
Web KT
Back
Top Bottom