Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
vba查找具有多个范围值的集合_Vba_Excel_Find - Fatal编程技术网

vba查找具有多个范围值的集合

vba查找具有多个范围值的集合,vba,excel,find,Vba,Excel,Find,我正在寻找一种方法来生成一个具有两个给定范围值的集合 例如,在我的代码中,我有以下内容: Set myList = FindAll(columnValue, Sheet2.Range("ColumnName")) Set advisorFound = myList.Offset(, -2) 我想做的是能够使用两个范围值查找DALL,例如: Set myList = FindAll(columnValue, Sheet2.Range("ColumnName"), anotherColumnVal

我正在寻找一种方法来生成一个具有两个给定范围值的集合

例如,在我的代码中,我有以下内容:

Set myList = FindAll(columnValue, Sheet2.Range("ColumnName"))
Set advisorFound = myList.Offset(, -2)
我想做的是能够使用两个范围值查找DALL,例如:

Set myList = FindAll(columnValue, Sheet2.Range("ColumnName"), anotherColumnValue, Sheet2.Range("anotherColumnName"))
但是,我知道FindAll函数不是我想要的,因为它最多只需要两个参数,如果我使用它,代码的其余部分也没有意义(偏移量不起作用)

我的最终目标是:获取一组包含这两个范围限制的行,我只想访问此集合中另一列中具有最小值的行(与找到的其他行相比)


我已经查阅了文档(),但似乎找不到我要查找的内容。提前感谢您的帮助:)

您可以使用
AutoFilter()


使用工作表(“Sheet2”)'为什么不使用过滤器,然后将可见的内容复制到另一张工作表上。然后你就可以在数据集中搜索你的最小值。@Scott Craner:哦,这是一个伟大而简单的想法:)我会试试的!我想我把问题复杂化了。非常感谢
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