2016-12-30 15 views
0

私は2つの与えられた範囲の値でセットを生成する方法を探しています。vba - 複数の範囲値を持つセットを見つける

例えば、私のコードでは、私が持っている次:私がやりたい何

Set myList = FindAll(columnValue, Sheet2.Range("ColumnName")) 
Set advisorFound = myList.Offset(, -2) 

は、次のような2つの範囲値とのfindAllすることができるようです。しかし

Set myList = FindAll(columnValue, Sheet2.Range("ColumnName"), anotherColumnValue, Sheet2.Range("anotherColumnName")) 

、私は、FindAll関数は、2つのパラメータしか使用しないので、私が探しているものではないことを認識しています。

私の最終目標は、範囲制限の両方を含む行のセットを取得することです。このセット内の他の列に最小値を持つ行にアクセスしたいだけです行が見つかりました)

私はドキュメント(https://msdn.microsoft.com/en-us/library/office/ff839746.aspx)を見ましたが、私が探しているものを見つけることができません。事前のおかげで、私はあなたの助けに感謝:)

+1

を。次に、最小限のデータセットを検索することができます。 –

+0

@Scott Craner:ああ、すごく簡単なアイデア:)それを試してみよう!私は問題を複雑にしていたと思う。どうもありがとう – Rose

答えて

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 
関連する問題