Muốn đếm số lượng hay số lần xuất hiện của cột TKTG theo điều kiện mà em làm vba mãi chưa ra! Mong ACE giúp ah

Liên hệ QC

Lequocvan

Thành viên thường trực
Tham gia
21/8/07
Bài viết
364
Được thích
128
Donate (Paypal)
Donate
Donate (Momo)
Donate
Giới tính
Nam
Nghề nghiệp
Agribank
Muốn đếm số lượng hay số lần xuất hiện của cột TKTG theo điều kiện mà em làm vba mãi chưa ra! Mong mọi người giúp ah
Bình thường countif thì ra nhưng nay em muốn làm bằng VBA nhưng tìm hoài chưa ra giải pháp nên post lên đây mong mọi người giúp ah!
 

File đính kèm

  • ko nghi ra code de dem thay countif.xlsx
    1.1 MB · Đọc: 17
Lần chỉnh sửa cuối:
Muốn đếm số lượng hay số lần xuất hiện của cột TKTG theo điều kiện mà em làm vba mãi chưa ra! Mong ACE giúp ah
Bình thường countif thì ra nhưng nay em muốn làm bằng VBA nhưng tìm hoài chưa ra giải pháp nên post lên đây mong ACE giúp ah!
PivotTable là có kết quả, code thì cũng chạy ra PivotTable là cách nhanh nhất.
 
Muốn đếm số lượng hay số lần xuất hiện của cột TKTG theo điều kiện mà em làm vba mãi chưa ra! Mong ACE giúp ah
Bình thường countif thì ra nhưng nay em muốn làm bằng VBA nhưng tìm hoài chưa ra giải pháp nên post lên đây mong ACE giúp ah!
nhìn vào fiel chẳng hiểu đếm theo điều kiện gì thì làm sao viết code đây ta
 
em đang thử code này đây :
Mã:
Sub test1()
    Worksheets("Sheet2").Select
    Dim dic As Object
    Dim iRow As Long, i As Long
    Dim Arr() As Variant, VungDuLieu As Variant

    Dim Dic2 As Object
    Dim j As Long
    Dim n As Long


    With Sheets("Sheet2")
        Set dic = CreateObject("Scripting.Dictionary")
        Set Dic2 = CreateObject("Scripting.Dictionary")
        VungDuLieu = Range("A1", Range("A1").End(xlToRight).End(xlDown).Address).Value '65536 '1048576
        ReDim Arr(1 To UBound(VungDuLieu, 1), 1 To 10)

        For iRow = 1 To UBound(VungDuLieu, 1)
            If Not IsEmpty(VungDuLieu(iRow, 5)) And Not dic.Exists(VungDuLieu(iRow, 5)) Then

                i = i + 1
                dic.Add VungDuLieu(iRow, 5), i
                Arr(i, 1) = VungDuLieu(iRow, 5)
                'MsgBox "Tai: " & iRow & "___" & VungDuLieu(iRow, 7)

                If VungDuLieu(iRow, 10) = "USD" Then
                    If VungDuLieu(iRow, 2) = "HoiSo" Then
                        Arr(i, 2) = Dic2.count
                    End If
                ElseIf VungDuLieu(iRow, 10) = "VND" Then
                End If
            Else

            End If
        Next iRow
    End With

    Sheets("Sheet2").Select
    With Sheets("Sheet2")
        .Range("O2").Resize(i, 3).Value = Arr 'dong nay de xuat gtri mang Arr ra B51
    End With
    Set dic = Nothing

End Sub

Em cũng nghỉ mãi mới dám đánh tiêu đề như vậy, khó thiệt là khó
 
Lần chỉnh sửa cuối:
Cột TKTG là duy nhất mà, đếm gì vậy? bạn có lộn với cột khác không? cột kết quả của bạn là cột O-Q đó hả? Sao không dùng pivot vậy?
 
Muốn đếm số lượng hay số lần xuất hiện của cột TKTG theo điều kiện mà em làm vba mãi chưa ra! Mong mọi người giúp ah
Bình thường countif thì ra nhưng nay em muốn làm bằng VBA nhưng tìm hoài chưa ra giải pháp nên post lên đây mong mọi người giúp ah!
Bạn kiểm tra lại, hình như chỉ 34 ( kết quả của bạn là 38) DP_TypeCode đạt yêu cầu để đếm, nếu đúng thế thì ...tiếp tục
4 thằng này 666; 682; 613; 609 không đủ yêu cầu
Thân
 
em đang thử code này đây :
Mã:
Sub test1()
    Worksheets("Sheet2").Select
    Dim dic As Object
    Dim iRow As Long, i As Long
    Dim Arr() As Variant, VungDuLieu As Variant

    Dim Dic2 As Object
    Dim j As Long
    Dim n As Long


    With Sheets("Sheet2")
        Set dic = CreateObject("Scripting.Dictionary")
        Set Dic2 = CreateObject("Scripting.Dictionary")
        VungDuLieu = Range("A1", Range("A1").End(xlToRight).End(xlDown).Address).Value '65536 '1048576
        ReDim Arr(1 To UBound(VungDuLieu, 1), 1 To 10)

        For iRow = 1 To UBound(VungDuLieu, 1)
            If Not IsEmpty(VungDuLieu(iRow, 5)) And Not dic.Exists(VungDuLieu(iRow, 5)) Then

                i = i + 1
                dic.Add VungDuLieu(iRow, 5), i
                Arr(i, 1) = VungDuLieu(iRow, 5)
                'MsgBox "Tai: " & iRow & "___" & VungDuLieu(iRow, 7)

                If VungDuLieu(iRow, 10) = "USD" Then
                    If VungDuLieu(iRow, 2) = "HoiSo" Then
                        Arr(i, 2) = Dic2.count
                    End If
                ElseIf VungDuLieu(iRow, 10) = "VND" Then
                End If
            Else

            End If
        Next iRow
    End With

    Sheets("Sheet2").Select
    With Sheets("Sheet2")
        .Range("O2").Resize(i, 3).Value = Arr 'dong nay de xuat gtri mang Arr ra B51
    End With
    Set dic = Nothing

End Sub

Em cũng nghỉ mãi mới dám đánh tiêu đề như vậy, khó thiệt là khó
PivotTable là cách nhanh nhất, code lại ngắn gọn và dễ biến hóa hơn (có thể tính bất kỳ cột) sao bạn không nghĩ đến nó.
 
Đếm số lượng duy nhất cũng đếm ah
 
Web KT
Back
Top Bottom