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

Chia sẻ bởi:hands
★★★★★
Quảng cáo

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.

Xài đỡ cái này trong khi chờ cái khác tối ưu hơn

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

www.giaiphapexcel.com/diendan/threads/c%E1%BA%A7n-ng%C6%B0%E1%BB%9Di-gi%C3%BAp-vi%E1%BA%BFt-code-vba-thay-th%E1%BA%BF-h%C3%A0m-sumif.165653/

Khóa học Power PI – Ứng dung trong Nhân sự
Khóa học SprinGO phù hợp

Khóa học Power PI – Ứng dung trong Nhân sự

TỔNG QUAN KHÓA HỌC: POWER BI CHO NGÀNH NHÂN SỰ Khóa học Power BI cho Nhân sự được thiết kế dành riêng cho các...

Xem khóa học
★★★★★ 5 ★ 1 👤 0 ▥ 0
Quảng cáo

Bạn nên đọc

Bình luận

Quảng cáo

Cũ vẫn chất

Xem thêm