【问题标题】:How to write a more efficient macro for returning the highest value in column A如何编写更有效的宏来返回 A 列中的最大值
【发布时间】:2014-11-08 06:00:49
【问题描述】:

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

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

我曾考虑按从最高到最低的值对 A 列进行排序,但我想保留当前顺序。

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

谢谢

【问题讨论】:

  • @SiddharthRout 虚幻。我发誓我将那条确切的行放入 VBA 并收到错误,但现在它可以 100% 工作。也许我像个傻瓜一样漏掉了引号。谢谢。
  • 不用担心。)我在下面的答案中向您展示了两个示例:)

标签: excel vba


【解决方案1】:

如果您想在 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-24
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-23
    相关资源
    最近更新 更多