1
我試圖在第2行選擇在Excel VBA 2007具有
實施例的小區中的最大值的範圍內選擇的細胞,細胞A至H有一些數字但細胞B2具有的最高值。有沒有一個公式可以用來獲取單元格B2的地址?
基於此,有沒有一種方法可以使用變量來選擇Range(「:」)?
我是VBA的新手,所以任何幫助將不勝感激。
感謝
我試圖在第2行選擇在Excel VBA 2007具有
實施例的小區中的最大值的範圍內選擇的細胞,細胞A至H有一些數字但細胞B2具有的最高值。有沒有一個公式可以用來獲取單元格B2的地址?
基於此,有沒有一種方法可以使用變量來選擇Range(「:」)?
我是VBA的新手,所以任何幫助將不勝感激。
感謝
=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
下面的代碼可能會幫助您達到目標。讓我們知道,如果它不清楚。
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
+1!我真的很喜歡當有人發現一個更優雅的Excel方式來做這些簡單的事情。我會用Excel公式很糟糕:D – 2011-04-13 21:50:30
謝謝蒂亞戈。 :) @zack:如果你不需要$符號,只需在我的公式中添加replace()函數即可。 – 2011-04-13 21:58:00
感謝尼克..這個公式的工作原理,如果我把它放入Excel中的單元格內,但如果嘗試在VB編輯器中使用變量=「您的公式」,則不起作用。任何我在這裏做錯了嗎?我也可以使用Range(「E [row_variable]:M [row_variable]」)來選擇範圍嗎? – zack 2011-04-13 22:41:18