具有

2011-04-13 27 views
1

我試圖在第2行選擇在Excel VBA 2007具有

實施例的小區中的最大值的範圍內選擇的細胞,細胞A至H有一些數字但細胞B2具有的最高值。有沒有一個公式可以用來獲取單元格B2的地址?

基於此,有沒有一種方法可以使用變量來選擇Range(「:」)?

我是VBA的新手,所以任何幫助將不勝感激。

感謝

回答

2
=CELL("address",INDEX(A2:H2,MATCH(MAX(A2:H2),A2:H2,0))) 

編輯。

Sub max_value_address() 
Dim i As Long 
i = 2 
'This example assigns to A1 cell the address of max value in the range a2:h2 
Range("a1").Formula = "=CELL(""Address"",INDEX(A" & i & ":H" & i & ",MATCH(MAX(A" & i & ":H" & i & "),A" & i & ":H" & i & ",0)))" 
End Sub 

編輯2. 這個版本更簡潔一點。

Sub max_value_address() 
Dim i As Long 
Dim str As String 
i = 2 
str = "a" & i & ":h" & i 'assign to str a2:h2 
Range("a1").Formula = "=CELL(""address"",INDEX(" & str & ",MATCH(MAX(" & str & ")," & str & ",0)))" 
End Sub 
+1

+1!我真的很喜歡當有人發現一個更優雅的Excel方式來做這些簡單的事情。我會用Excel公式很糟糕:D – 2011-04-13 21:50:30

+0

謝謝蒂亞戈。 :) @zack:如果你不需要$符號,只需在我的公式中添加replace()函數即可。 – 2011-04-13 21:58:00

+0

感謝尼克..這個公式的工作原理,如果我把它放入Excel中的單元格內,但如果嘗試在VB編輯器中使用變量=「您的公式」,則不起作用。任何我在這裏做錯了嗎?我也可以使用Range(「E [row_variable]:M [row_variable]」)來選擇範圍嗎? – zack 2011-04-13 22:41:18

0

下面的代碼可能會幫助您達到目標。讓我們知道,如果它不清楚。

Sub GetHigherValueCellAddress() 

    Dim oCell As Excel.Range 
    Dim oRange As Excel.Range 
    Dim vPrevValue As Variant 
    Dim sAddress As String 

    Set oRange = Sheets(1).Range("A1:C2") 

    For Each oCell In oRange 

     If oCell.Value > vPrevValue Then 

      sAddress = oCell.Address 
      vPrevValue = oCell.Value 

     End If 

    Next oCell 

    MsgBox sAddress 

End Sub