我正在寻找一种生成具有两个给定范围值的Set的方法。
例如,在我的代码中,我有以下内容:
Set myList = FindAll(columnValue, Sheet2.Range("ColumnName"))
Set advisorFound = myList.Offset(, -2)
我想要的是能够使用两个范围值的FindAll,例如:
Set myList = FindAll(columnValue, Sheet2.Range("ColumnName"), anotherColumnValue, Sheet2.Range("anotherColumnName"))
但是,我知道FindAll函数不是我想要的,因为它只需要两个参数,其余的代码也没有意义,如果我正在使用它(偏移量不会和#39;工作)。
我的最终目标是:获取一组包含两个范围限制的行,我只想访问此集合中另一列中具有最小值的行(与其他行相比)发现)
我查了一下文档(https://msdn.microsoft.com/en-us/library/office/ff839746.aspx),但我似乎无法找到我要找的东西。在此先感谢,感谢您的帮助:)
答案 0 :(得分:0)
您可以使用AutoFilter()
:
With Worksheets("Sheet2") '<--| reference your data sheet
With .Range(.Range("ColumnName"), .Range("anotherColumnName")) '<--| reference its range ranging between two named ranges
.AutoFilter Field:=.Parent.Range("ColumnName").Column - .Columns(1).Column + 1, Criteria1:=columnValue '<--| 1st filter on first named range
.AutoFilter Field:=.Parent.Range("anotherColumnName").Column - .Columns(1).Column + 1, Criteria1:=anothercolumnValue '<--| 2nd filter on 2nd named range
If Application.WorksheetFunction.Subtotal(103, .Resize(, 1)) > 1 Then '<--| if any filtered cell then
With Intersect(.Resize(.Rows.count - 1).Offset(1).SpecialCells(xlCellTypeVisible).EntireRow, .Columns(1).Offset(, -2)) '<--| reference cells two columns to the left of the lower column index named range filtered ones
Set myList = Intersect(.Find(what:=WorksheetFunction.min(.Cells), lookat:=xlWhole, LookIn:=xlValues).EntireRow, .Parent.UsedRange) '<-- set the row "used" range with the minimum value in the referenced cells
End With
End If
End With
.AutoFilterMode = False
End With