在Sheet2中自动过滤,并在Sheet1中将过滤范围用于SUMIF

时间:2019-05-27 13:21:17

标签: excel vba

我想在SUMIF函数中使用过滤范围。我的WB中有一些命名范围(Sheet1中的“ uselist”是项目的一列,Sheet2中的“等分”是数量的一列,Sheet2中的“ dates”是日期为yyyy-mm-dd的一列)。

我的代码中的此公式按预期工作(即,将“使用列表”列中具有item=cell.Value的“等分试样”中的数量相加):

Cells(cell.Row, "K") = Application.SumIf(Range("uselist"), cell.Value, Range("aliquotes")) 

但是现在我希望将总和限制为在“日期”列中具有在Sheet1的“ O”列中报告的日期与现在之间的日期之间的行。我正在工作的“单元格”在Sheet1中。这是我的代码:

Sub FilterSum()
On Error Resume Next

Dim MyRangeI As Range
Dim MyRangeO As Range
Dim cell As Range
Dim XNEWRANGE As Range
Dim wsI As Worksheet
Dim wsO As Worksheet

Set wsI = ThisWorkbook.Sheets("Sheet1")
Set wsO = ThisWorkbook.Sheets("Sheet2")

With wsI.UsedRange 'don't consider headers
    Set MyRangeI = Range(.Cells(2, 1), .Cells(1, 1).Offset(.Rows.Count - 1, .Columns.Count - 1))
    MyRangeI.Select
End With

With wsO.UsedRange 'don't consider headers
    Set MyRangeO = Range(.Cells(2, 1), .Cells(1, 1).Offset(.Rows.Count - 1, .Columns.Count - 1))
    MyRangeO.Select
End With

Application.ScreenUpdating = False

For Each cell In MyRangeI.Columns("A").Cells 'cell belongs to "uselist" Named Range

MyRangeO.AutoFilter Field:=9, Criteria1:=">=" & MyRangeI.Cells(cell.Row, "O"), Operator:=xlAnd, Criteria2:="<=" & Now 'Field 9 is the same of the Named Range "dates"

Set XNEWRANGE = MyRangeO.SpecialCells(xlCellTypeVisible)

MyRangeI.Cells(cell.Row, "K") = Application.SumIf(XNEWRANGE, MyRangeI.cell.Value, Range("aliquotes"))

MyRangeO.ShowAllData 'reset filter before start new cell
Next cell

Application.ScreenUpdating = True
End Sub

我认为要用于宏的两个不同的工作表存在问题。

0 个答案:

没有答案