WorksheetFunction.Sumifs (1 người xem)

Liên hệ QC

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

vipvphvtc

Thành viên mới
Tham gia
17/11/11
Bài viết
8
Được thích
0
Chào các bạn,
mình có 1 file như thế này, giờ mình muốn sử dụng code VBA để dùng hàm sumifs vào ô C22 để tính tổng 2 điều kiện: MNN = 0805 và TK = 2.
1 đoạn code của mình như này nhưng mà ko đúng, mong mọi người sửa giúp với ạ,
.....
Cells(22,3)=Application.WorksheetFunction.SumIfs(Range("C2:C17"),Range("B2:B17"),Cells(22,2),Range("A2:A17"),"2")
.....
 

File đính kèm

Mã:
With Sheet1
.Cells(22, 3) = Application.WorksheetFunction.SumIfs(.Range("C2:C17"), Range("B2:B17"), .Cells(22, 2), .Range("A2:A17"), 2)
End With
 
Upvote 0
Tốc độ cho hơn vạn dòng dữ liệu cũng không kém là bao.

Tham khảo cách xài mảng:
PHP:
Sub ThuNghiem()
 Dim Tmr As Double, J As Long, w As Long, Dg As Byte
 Dim Arr(), tArr()
 
 Tmr = Timer
 Arr() = [b2].CurrentRegion.Offset(1).Value
 tArr() = Range("E2:E6").Value      'Giá Tri MMM'
 ReDim dArr(1 To UBound(tArr()), 1 To 1)
 For Dg = 1 To UBound(tArr())
    For J = 1 To UBound(Arr())
        If Arr(J, 1) = 2 And Arr(J, 2) = tArr(Dg, 1) Then
            dArr(Dg, 1) = dArr(Dg, 1) + Arr(J, 3)
        End If
    Next J
 Next Dg
 [h2:h6].Value = dArr()         'Hien Tong Tính Duoc'
 [h1] = Timer - Tmr
End Sub
 
Upvote 0
Chào các bạn,
mình có 1 file như thế này, giờ mình muốn sử dụng code VBA để dùng hàm sumifs vào ô C22 để tính tổng 2 điều kiện: MNN = 0805 và TK = 2.
1 đoạn code của mình như này nhưng mà ko đúng, mong mọi người sửa giúp với ạ,
.....
Cells(22,3)=Application.WorksheetFunction.SumIfs(Range("C2:C17"),Range("B2:B17"),Cells(22,2),Range("A2:A17"),"2")
.....
nếu dữ liệu nhiều thì dùng Dictionary
Mã:
Sub SumIf_2DK()
 Dim i As Long, LastR As Long, TK, Tmp As String
 Dim Dic As Object, Arr(), Darr()
 LastR = Range("A65500").End(xlUp).Row
 If LastR < 2 Then Exit Sub
 TK = 2
 Darr() = Range("A2:C" & LastR).Value
 Arr() = Range("B22:C" & Range("B65500").End(xlUp).Row).Value
 Set Dic = CreateObject("scripting.dictionary")
 For i = 1 To UBound(Darr)
  If Darr(i, 1) <> "" Then
    Tmp = Darr(i, 1) & "#" & Darr(i, 2)
    If Not Dic.exists(Tmp) Then
      Dic.Add Tmp, Darr(i, 3)
    Else
      Dic.Item(Tmp) = Dic.Item(Tmp) + Darr(i, 3)
    End If
  End If
 Next i
 For i = 1 To UBound(Arr)
  Tmp = TK & "#" & Arr(i, 1)
  Arr(i, 2) = Dic.Item(Tmp)
 Next i
 Range("B22").Resize(UBound(Arr), 2) = Arr()
End Sub
 
Upvote 0
Bác cứ dùng Application.sumifs(vung_sum, vung_dk1, dk1, vungdkn, dkn) là được mà.
 
Upvote 0
Web KT

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

Back
Top Bottom