請教一下VBA用EXCEL的max函數後,找得該欄最大值,能否順道找出該值的所在列?

因為有時我會在同欄位(例如C欄)
的C2:C1000 找出最大值
但有時又想改成只找C400:C800內的最大值
本來是打算直接設定變數,然後再找出最大值後,再用.find的方法去找出該值的所在列
可是如果如我上述的條件,每次要找的範圍區間都不同時,且每次條件找得的最大值的所在列索引編號都要記錄時,
若條件過多時,如:
1、找C2:C1000 找出最大值
2、找C2:C100 最大值
3、找C2:C200 最大值
4、找C300:C500 最大值
......
如此一來會變成變數要設定很多
以便在條件裡找得該值後,再用.find去出最大值的所在列編號
再用變數去指定所在列..
感覺這樣很多此一舉..
畢竟EXCEL的max函數都已經直找出範圍區間的最大值了..
怎麼就不知道要如何順帶帶出該值的所在列?
還是說其實是有方法的,麻煩請諸位大神幫幫忙。再次感謝不盡
還有祝各位身體健康萬褔.^^.
MaverickRay wrote:
因為有時我會在同欄位...(恕刪)

max函數應該是沒有找到該列的功能,如果把找到該列的功能做成Function或許不用這麼多變數?
Sub Main()
MsgBox FindMAX_Row(2, 1000) '查找範圍C2:C1000
MsgBox FindMAX_Row(2, 200) '查找範圍C2:C200
End Sub

Function FindMAX_Row(ByVal Row_Start As Integer, ByVal Row_End As Integer)
Dim dataArea As Range
Set dataArea = Range("C" & Row_Start & ":C" & Row_End)
Set cell = dataArea.Find(WorksheetFunction.Max(dataArea))
FindMAX_Row = cell.Address
End Function
小小尉 wrote:
max函數應該是沒有(恕刪)
您好,我想請教一下,我複製您的程序碼,先直接執行了下,結果出現如附圖的中斷..
恩...沒有設定物件...是....???我先提問一下,有時間時我也會查查看..先謝謝您的幫忙..

OK我找到問題所在了,原來是我自個把cell這變數宣告成as range
使得物件有誤。
不過我還在想這樣的做法我要怎麼來改造以便我的需求,在此再次感謝您提供的編碼^^
祝您順心如意。
小小尉
你查找範圍內C2~C200有給資料嗎? 查找範圍內都是NULL沒有數值就沒辦法比對誰是最大值會跳這個錯誤。
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!