2016-12-04 104 views
0

我寫了一個VBA,它給了我1個cell-rng2的輸出。如何選擇選定單元格下方的範圍?

我希望能夠檢查它下面的3個單元格的最小值,並查看最小單元格的地址以在下一代碼中使用它。

例如: 第2級是Range("AA9")

我想要檢查AA10(200),AA11(150),AA12(300)的代碼 - 比較這些值並告訴我哪個是三者中的最小值。

在這種情況下,答案應該是Range("AA11")

+0

查看'Selection.Offset()' –

回答

1
Function minCellBelow(ByRef rng2 As Range, ByVal count As Long) As Range 
    Dim rng As Range: Set rng = rng2.Offset(1).Resize(count) 
    With Application.WorksheetFunction 
     Set minCellBelow = rng2.Offset(.Match(.Min(rng), rng, 0)) 
    End With 
End Function 
1

嘗試下面的代碼,解釋是代碼的註釋裏:

Option Explicit 

Sub SelectSpecial() 

Dim Rng2 As Range, Rng As Range 
Dim MinVal, LRow As Variant 

' modify "Sheet1" to your sheet's name 
With Worksheets("Sheet1") 
    Set Rng2 = .Range("AA9") 

    ' set another range that starts 1 row below, and is 3 rows 
    Set Rng = Rng2.Offset(1, 0).Resize(3, 1) 

    ' find minimum value in Range of cells 
    MinVal = WorksheetFunction.Min(Rng) 

    ' find the row location of the Minimum values using the MATCH function 
    LRow = Application.Match(MinVal, Rng, 0) 

    ' display reult value found, and cell address 
    MsgBox "Minimum Value is " & MinVal & " , located at cell " & .Range("AA" & Rng2.Row + LRow).Address 
End With 

End Sub 
0

您可以使用下面的功能做到這一點(把它到vba模塊)。然後輸入excel = Maxadress(你的範圍)

Function Maxadress(rng As Range) As String 
    Maxadress = WorksheetFunction.Index(rng, WorksheetFunction.Match(WorksheetFunction.max(rng), rng, 0)).Address 

End Function 
相關問題