Excel VBA在特定工作表上查找范围内的最大值

时间:2015-08-09 16:55:14

标签: excel vba

我发现以下代码的范围是最大值:

Cells(Count, 4)=Application.WorksheetFunction.Max(Range(Cells(m, 1),Cells(n, 1)))

如何在特定表格内搜索?在这种情况下,Data

喜欢:

Worksheets(d).Cells(x, 4).Value = Worksheets("Data")... ????? FIND MAX ????

3 个答案:

答案 0 :(得分:6)

这通常有效,但缺少参考:

 worksheets("Data").Cells(Count, 4)=  Application.WorksheetFunction.Max _
    ( worksheets("Data").range( cells(m,1) ,cells(n,1) )

文本" cell"应该在引用单元格所在的工作表之前,我会写这个:

worksheets("Data").Cells(Count, 4) = Application.WorksheetFunction.Max _
    ( worksheets("Data").range( worksheets("Data").cells(m,1) ,worksheets("Data").cells(n,1) )

这也可以这样写得更清楚:

with worksheets("Data")
    .Cells(Count, 4) =  Application.WorksheetFunction.Max _
                            ( .range( .cells(m,1) ,.cells(n,1) )
End With 

我希望这会有所帮助。

哈维

答案 1 :(得分:3)

您可以将任何有效的excel单元格引用作为字符串传递给range方法。

Application.WorksheetFunction.Max(range("Data!A1:A7"))

在你的情况下,请像这样使用它,在你的范围的边缘定义两个单元格:

Application.WorksheetFunction.Max _
    (range(worksheets("Data").cells(m,1),worksheets("Data").cells(n,1)))

答案 2 :(得分:0)

如果要快速处理数百万个电池以找到MAX / MIN,则需要较重的机械。这段代码比Application.WorksheetFunction.Max更快。

Function Max(ParamArray values() As Variant) As Variant
   Dim maxValue, Value As Variant
   maxValue = values(0)
   For Each Value In values
       If Value > maxValue Then maxValue = Value
   Next
   Max = maxValue
End Function

Function Min(ParamArray values() As Variant) As Variant
   Dim minValue, Value As Variant
   minValue = values(0)
   For Each Value In values
       If Value < minValue Then minValue = Value
   Next
   Min = minValue
End Function

从这里被盗:https://www.mrexcel.com/forum/excel-questions/132404-max-min-vba.html