Автофильтр в Sheet2 и использовать отфильтрованный диапазон для SUMIF в Sheet1 - PullRequest
0 голосов
/ 27 мая 2019

Я хочу использовать отфильтрованный диапазон в функции SUMIF. У меня есть некоторый Именованный диапазон в моем ББ («список использования» в Sheet1 - это столбец элемента, а «аликвоты» в Sheet2 - это столбец количества, «даты» в Sheet2 - это столбец даты yyyy-mm-dd).

Эта формула в моем коде работает как ожидалось (т.е. суммируйте количества в "аликвотах", которые имеют item=cell.Value в столбце "списка использования"):

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

Но теперь я хочу ограничить сумму теми строками, в столбце «даты» которых есть дата между датой, указанной в столбце «О» на Листе 1, и «Сейчас». «Ячейка», в которой я работаю, находится в 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

По моему мнению, есть проблема с двумя разными листами, которые я хочу использовать для макроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...