theanhst92
Thành viên hoạt động



- Tham gia
- 31/3/16
- Bài viết
- 134
- Được thích
- 15
Mục đích của bạn thay Sumif bằng VBA để làm gì nhỉ ???, Sumif có sẵn không dùng ?em bụng chỉ có giá trị và tổng hợp với nhau mong các bác có thể làm được
Mục đích của bạn thay Sumif bằng VBA để làm gì nhỉ ???, Sumif có sẵn không dùng ?
tại dùng sumif khi nhập liệu file em của nó chạy dư liệu nên rất chập chạm. mà tắt tính năng tính tự động thì khi dùng một số sheet khác thì lại phải lưu thêm một bước nữa thì công thức phải chạy. nên sheet có chứa hàm sumifs này em muốn khi nào cần dùng mới lấy kết quả ạNên dùng cái có sẵn: SUMIFS, AdvancedFilter, PivotTable
Tham khảo code:tại dùng sumif khi nhập liệu file em của nó chạy dư liệu nên rất chập chạm. mà tắt tính năng tính tự động thì khi dùng một số sheet khác thì lại phải lưu thêm một bước nữa thì công thức phải chạy. nên sheet có chứa hàm sumifs này em muốn khi nào cần dùng mới lấy kết quả ạ
Sub TongHop()
Dim sAr As Variant, dAr As Variant, i As Long, j As Long
Dim sDt As Date, eDt As Date, rAr As Variant
With Sheet2
sAr = Range("J6:J" & Range("J65535").End(xlUp).Row).Value
ReDim rAr(1 To UBound(sAr, 1), 1 To 1)
Range("K6").Resize(UBound(sAr, 1)).ClearContents
dAr = Range("C6:E" & Range("C65535").End(xlUp).Row).Value
sDt = Range("K3").Value: eDt = Range("K4").Value
For i = 1 To UBound(sAr, 1)
For j = 1 To UBound(dAr, 1)
If sAr(i, 1) = dAr(j, 2) And dAr(i, 1) >= sDt And _
dAr(j, 1) <= eDt Then
rAr(i, 1) = rAr(i, 1) + dAr(j, 3)
End If
Next j
Next i
Range("K6").Resize(UBound(sAr, 1)) = rAr
End With
End Sub
Option Explicit
Sub TongHop()
Dim sAr As Variant, dAr As Variant, i As Long, j As Long
Dim sDt As Date, eDt As Date, rAr As Variant
With Sheet1
dAr = Sheets("sheet1").Range("C6:E" & Range("C65535").End(xlUp).Row).Value 'vung du lieu
End With
With Sheet2
sAr = Range("J6:J" & Range("J65535").End(xlUp).Row).Value 'vung ma dieu kien
ReDim rAr(1 To UBound(sAr, 1), 1 To 1)
Range("K6").Resize(UBound(sAr, 1)).ClearContents 'xoa du lieu tu o k6
sDt = Range("K3").Value: eDt = Range("K4").Value 'dieu kien tu ngay den ngay
For i = 1 To UBound(sAr, 1)
For j = 1 To UBound(dAr, 1)
If sAr(i, 1) = dAr(j, 2) And dAr(j, 1) >= sDt And _
dAr(j, 1) <= eDt Then
rAr(i, 1) = rAr(i, 1) + dAr(j, 3)
End If
Next j
Next i
Range("K6").Resize(UBound(sAr, 1)) = rAr
End With
End Sub