Cần người giúp viết code VBA thay thế hàm Sumif

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

baochilam

Thành viên mới
Tham gia
4/3/11
Bài viết
3
Được thích
0
Xin chào mọi người.
Minh có một file đơn giản nhưng nó nặng hơn bình thường vì dùng hàm Sumif với đối tượng symbol . Ai đó biết về VBA có thể cho mình xin code để thay thế hàm sumif ở cột H trong sheet1 ( Thẻ_kho ) được không ạ ?
Mục đích là để tăng tốc độ tính toán, lưu và mở file khi làm việc.
Cảm ơn nhiều.
 

File đính kèm

Xài đỡ cái này trong khi chờ cái khác tối ưu hơn
PHP:
Option Explicit
Sub sumif()
Dim lr&, i&, rng, rngA, res(), dic As Object
Set dic = CreateObject("Scripting.Dictionary")

With Sheets("Sheet2") 'luu vung du lieu can sumif vao array
    lr = .Cells(Rows.Count, "A").End(xlUp).Row
    rng = .Range("G1:N" & lr).Value
End With

'duyet qua cot G, luu gia tri duy nhat vao dictionary (key) va cong don cot N (item)
For i = 1 To UBound(rng)
    If Not dic.exists(rng(i, 1)) Then
        dic.Add rng(i, 1), rng(i, 8)
    Else
        dic(rng(i, 1)) = dic(rng(i, 1)) + rng(i, 8)
    End If
Next

'duyet qua cac gia tri tai cot A, tim kiem key tuong ung va lay item ra luu vao array "res", sau do dan tro lai vao shhet
With Sheets("Sheet1")
    lr = .Cells(Rows.Count, "A").End(xlUp).Row
    rngA = .Range("A1:A" & lr).Value
    ReDim res(1 To UBound(rngA), 1 To 1)
    For i = 1 To UBound(rngA)
        If dic.exists(rngA(i, 1)) Then res(i, 1) = dic(rngA(i, 1))
    Next
    .Range("H1:H10000").ClearContents
    .Range("H1").Resize(UBound(res), 1).Value = res
End With
End Sub
 

File đính kèm

Web KT

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

Back
Top Bottom