Nhờ Gán hàm Sumifs bằng VBA (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

theanhst92

Thành viên hoạt động
Tham gia
31/3/16
Bài viết
134
Được thích
15
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
 

File đính kèm

Nên dùng cái có sẵn: SUMIFS, AdvancedFilter, PivotTable
 
Upvote 0
Mục đích của bạn thay Sumif bằng VBA để làm gì nhỉ ???, Sumif có sẵn không dùng ?
Nên dùng cái có sẵn: SUMIFS, AdvancedFilter, PivotTable
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ả ạ
 
Upvote 0
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ả ạ
Tham khảo code:
Mã:
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
 

File đính kèm

Upvote 0
em ngồi xem đi xem lại mãi cũng hiểu ra cách thức chạy của mã, nhưng khi em muốn chuyển dữ liệu ra sheets khác. thì mã chỉ chạy khi ở cột c có dữ liệu, còn không có dữ liệu thì không chạy, nhờ bác sửa lại giúp em ạ.
Mã:
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
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom