2014-03-26 131 views
0

我需要通過EXCEL 2012 VBA找到列中的最大值。 有些單元格有「#VALUE!」。我的代碼不起作用。如何使用「#VALUE!」查找單元格在EXCEL 2010 VBA

Sub find_max() 
    Dim rng As Range 
    Dim dblMax As Double 
    dblMax = 0 
    Set rng = Range("A2:A11") 
    For Each cell In rng 
    If (cell.Value <> "#VALUE!") Then // error ! type mismatch 
     If dblMax < CDbl(cell.Value) Then 
      dblMax = CDbl(cell.Value) 
     End If 
    End If 
Next cell 
MsgBox dblMax 
End Sub 

我還需要用最大值打印單元格位置(用顏色標記)。

任何幫助,將不勝感激。

+1

變化'如果(cell.Value <>「#VALUE!」)然後'到'如果不是ISERROR(單元格)那麼' –

+0

我還需要打印單元格locat具有最大值的離子。謝謝 ! – user3440244

回答

1

如果你的範圍有常量,使用

application.WorksheetFunction.Max(range("B6:C13").SpecialCells(xlcelltypeconstants,xlNumbers)) 

如果有公式,使用

application.WorksheetFunction.Max(range("B6:C13").SpecialCells(xlcelltypeformulas,xlNumbers)) 

爲範圍,其中它的發現,.Find應該很好地工作:

Sub find_max() 


Dim rng As Range 
    Dim dblMax As Double, rgMax As Range 

    Set rng = Range("A2:A11") 

    dblMax = Application.WorksheetFunction.Max(rng.SpecialCells(xlCellTypeFormulas, xlNumbers)) 

    Set rgMax = rng.Find(dblMax, , xlValues, xlWhole) 

MsgBox rgMax.Address & ": " & dblMax 

End Sub 
+0

我在dblMax = Application.WorksheetFunction.Max(rng.SpecialCells(xlCellTypeFormulas,xlNumbers)得到了錯誤。謝謝 – user3440244

+0

如果你所有的數字都是常量,用'application.WorksheetFunction.Max(range(「B6:C13」) .SpecialCells(xlcelltypeconstants,xlNumbers))' – nutsch

相關問題