2017-03-06 323 views
0

我正在嘗試查找A2到A999內的單元格的最大值。我試圖做一個For循環來遍歷每一個,但有邏輯問題找到最大rcell。我希望有一個內置的rcell.max函數?在VBA中查找列的最大值

Set rng = loopset.range("A2-A999") 
For Each rcell in rrng.cells 
'Find the max rcell 
Next rcell 
+4

爲什麼不使用worksheetfunction:'的MaxValue = application.worksheetfunction.max(RNG)' –

+0

哦確定;我沒有意識到存在。我會嘗試的。 thx – nas

+0

所以這個函數可以工作,但是有可能利用這個函數在左邊的列上找到與MaxValue相同行的值。例如,如果MaxValue是X,並且其左側的列的溫度在該值,並且想要知道在同一行,溫度是多少,即同一行到左側列的值。這可能嗎?也許需要一個不同的循環,不知何故我需要保存行迭代? – nas

回答

3

Application.worksheetfunction.max(range("a:a"))會爲你做它

2

你的確可以使用函數application.worksheetfunction.max(RNG)的注意。爲了給出更完整的答案,幾乎任何可以在工作表上使用的Excel公式都可以通過application.worksheetfunction集合在VBA代碼窗口中使用。這包括最大值,最小值,sumif,vlookup等。

這應該爲您提供與在函數中使用該函數時所使用的參數相同的屏幕描述。但是,正如另一個用法指出的,使用application.max(range)不會提供相同的參數幫助。同樣的用戶指出,在使用application.max(rng)和worksheetfunction.max(rng)之間的錯誤處理方面有所不同,您可以在下面的註釋中看到這一點

至於確定最大值從值的列表,基本邏輯是這樣的:

max = 0 'set "inital" max 
For Each rcell in rrng.cells 'loop through values 
    if rcell.value > max then 'if a value is larger than the old max, 
    max = rcell.value ' store it as the new max! 
Next rcell 
+1

這個答案有誤導性。 'Application.WorksheetFunction.Max(...)'是早期的,你絕對可以得到參數工具提示。你將它與遲來的'Application.Max(...)'版本混淆起來了,這個版本在擴展的'Application'接口上工作,事實上並沒有提供工具提示 - 但那只是因爲它是一個晚期版本,綁定調用(在運行時解析)。兩者之間最顯着的區別不在於工具提示,而是它們如何處理錯誤;早期綁定會引發運行時錯誤,後期綁定*以'Variant'形式返回錯誤值。 –

+0

好吧,謝謝你對我的回答。但它真的值得讚賞嗎?只是試圖幫助 – Yoav24

+0

現在你的答案包含虛假信息。 Downvotes專門用於告訴訪問者*這個答案是錯誤的*,所以是的,downvote是有保證的。讓我知道一旦你[編輯]它,然後我可以收回(可能反向)它。 –