如何编写更高效的宏来返回A列中的最高值

时间:2014-11-07 21:43:18

标签: excel-vba vba excel

我有一个循环遍历A列中所有值的宏,并将最高值加1返回到所选单元格。

我一直在努力想出一种更有效的方法来完成同样的任务,而且没有好的解决方案。我尝试使用WorksheetFunction.Max但它需要将每个单元格作为输入进行比较(A列中有数千个单元格。)

我考虑过将值A从最高到最低的值排序,但我想保留当前的订单。

有什么想法吗?我需要宏来返回而不是公式。

由于

1 个答案:

答案 0 :(得分:0)

如果要在Col A中找到最大值,则无需将单个单元格传递给Application.WorksheetFunction.Max。只需传递整个列即可。例如

Debug.Print Application.WorksheetFunction.Max(Columns("A:A")) 

如果您想通过特定范围,请使用此

Debug.Print Application.WorksheetFunction.Max(Range("A1:A50")) 

以上是一个例子。不要忘记完全符合您的范围。例如

Application.WorksheetFunction.Max(ThisWorkbook.Sheets("Sheet1").Range("A1:A50"))

修改

另一种方式。这将找到最后一个包含Col A中数据的单元格,然后构造范围。

Sub Sample()
    Dim ws As Worksheet
    Dim lrow As Long
    Dim rng As Range

    Set ws = ThisWorkbook.Sheets("Sheet1")

    With ws
        lrow = .Range("A" & .Rows.Count).End(xlUp).Row

        Set rng = .Range("A1:A" & lrow)

        Debug.Print Application.WorksheetFunction.Max(rng)
    End With
End Sub