
我想在單元格G25到G30找到最大值(Score列),然后將對應同行的的F列單元格的內容 賦給另一個作業表Summary的G8單元格中,但是除錯說缺Object,為什么呢?
arr = Worksheets("Analysis").Range("G25:G30")
For x = 1 To UBound(arr)
m = Application.WorksheetFunction.Max(arr)
Set ro = Cells.Find(what = "m").Row 這一行我想找到最大值所在行
Sheets("Summary").Range("G8") = Sheets("Analysis").cells(ro,6),value
謝謝各位老師的指導。
uj5u.com熱心網友回復:
參考:Sub Test()
''VBA
Dim Rng As Range, Rng1 As Range, iMax As Single
Set Rng1 = Sheets("Analysis").Range("g25:g30")
iMax = WorksheetFunction.Max(Rng1)
For Each Rng In Rng1
If Rng.Value = iMax Then
Sheets("Summary").Range("g8") = Rng.Offset(-1, 0)
Exit Sub
End If
Next
End Sub
uj5u.com熱心網友回復:
非常感謝提供了另外一種思路。另有一個問題,find()能用于在陣列中尋找么?我把代碼改成如下后運行有誤,所以我想是不是find函式只能用于單元格,而不能用于陣列內尋找?arr = Worksheets("Analysis").Range("G25:G30")
For x = 1 To UBound(arr)
m = Application.WorksheetFunction.Max(arr)
ro = arr.Find(what = "m").Row 在陣列中找到最大值
另外我對陣列維度有點疑惑,舉個例子,假如我定義arr=Worksheets("Analysis").Range("F25:G30") '兩列陣列
如果我想遍歷G25到G30,那是不是應該用For x = 1 To UBound(arr,2) ?
如果想在G25和G30中找最大值,是不是應該為 m = Application.WorksheetFunction.Max(arr,2) ?
非常感謝您的指正。
uj5u.com熱心網友回復:
1、find只能在作業表或區域內查找,不能用于陣列內查找;2、直接用ubound(arr)或者ubound(arr,1)。你可以列印出看看UBound(arr,2)=?,UBound(arr,1)=?
3、 Application.WorksheetFunction.Max(arr,2) 永遠只回傳最后一列的最大值,你可以做個實驗看看Application.WorksheetFunction.Max(arr,1)=?
建議:單元格區域本身就是一個“可視的陣列”,可以使用for each 或者for i....for j...2種方式來回圈,干嘛非要弄成陣列來操作?
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/102477.html
標籤:VBA
上一篇:拜請各位大神賜教C/S結構的系統與資料庫2008的關系
下一篇:vb 有沒有生成矩陣文字的代碼
