Tạo hàm SUMIF để thực hiện qua nhiều Sheet

Ví dụ bạn có nhiều Sheet khác nhau và muốn tổng hợp dữ liệu thông qua hàm SUMIF một cách linh hoạt ,

hình dưới là Sheet 1

 

\"\"

 

Tiếp theo là dữ liệu trong Sheet 2

 

\"\"

 

Và Sheet 3 bạn muốn tổng hợp theo những dữ liệu cho trước

 

\"\"

 

Bạn muốn xem Thống kế của Đông là bao nhiêu , Tây là bao nhiêu , tổng hợp của Đông và Tây là bao nhiêu thì bạn tạo hàm sumifAMS như sau

Bấm tổ hợp phím Alt_F11 , khi đó mở ra của sổ Microsoft Visual Basic . Ở phần này bạn chọn menu Insert > Module  , sau đó copy nội dung bên dưới

 

Function SumifAMS(lookup_value As Range, ParamArray cellranges() As Variant)

Dim i As Integer, rng1 As Variant, temp As Single, a As Boolean

Dim rng2 As Variant, value As Variant, j As Single

If (UBound(cellranges) + 1) Mod 2 <> 0 Then

  MsgBox "The number of range arguments must be even. 2, 4 , 8 ... and so on"

  Exit Function

End If

For i = LBound(cellranges) To UBound(cellranges) Step 2

    If cellranges(i).Rows.Count <> cellranges(i + 1).Rows.Count Then

        MsgBox "The number of rows in range arguments don´t match."

    End If

    If cellranges(i).Columns.Count <> 1 Then

        MsgBox "Range arguments can only have size one column each."

        Exit Function

    End If

    rng1 = cellranges(i).value

    rng2 = cellranges(i + 1).value

    For j = LBound(rng1) To UBound(rng1)

        For Each value In lookup_value

            If UCase(rng1(j, 1)) = UCase(value) Then a = True

        Next value

        If a = True Then temp = temp + rng2(j, 1)

        a = False

    Next j

Next i

SumifAMS = temp

End Function

 

Quay trở lại Excel ở ô B3 bạn muốn hiện kết quả ở việc lấy những dữ liệu Đông của các Sheet 1 và Sheet 2 cộng với nhau thì hãy viết công thứ như sau

 

=sumifAMS(B2,Sheet1!$A$3:$A$9,Sheet1!$B$3:$B$9,Sheet2!$A$3:$A$9,Sheet2!$B$3:$B$9)

 

Tương tự với C3 là

 

=sumifAMS(C2,Sheet1!$A$3:$A$9,Sheet1!$B$3:$B$9,Sheet2!$A$3:$A$9,Sheet2!$B$3:$B$9)

 

Với E3 là thông kê của Đông và Tây thì viết công thức như sau

 

=sumifAMS(B2:C2,Sheet1!$A$3:$A$9,Sheet1!$B$3:$B$9,Sheet2!$A$3:$A$9,Sheet2!$B$3:$B$9)

 

 

 

 

 

\"\"\"\"