Excel 如何编写更高效的宏以返回列a中的最高值
我有一个宏,它循环遍历a列中的所有值,并将最高值加一返回到所选单元格 我一直在想一个更有效的方法来完成同样的任务,但没有好的解决方案。我尝试使用Excel 如何编写更高效的宏以返回列a中的最高值,excel,vba,Excel,Vba,我有一个宏,它循环遍历a列中的所有值,并将最高值加一返回到所选单元格 我一直在想一个更有效的方法来完成同样的任务,但没有好的解决方案。我尝试使用WorksheetFunction.Max,但它需要将每个单元格作为输入进行比较(A列中有数千个单元格) 我考虑过按从高到低的值对列A进行排序,但我希望保留当前的顺序 有什么想法吗?我需要宏返回一个值,而不是一个公式 谢谢如果要在A列中找到最大值,无需将单个单元格传递给Application.WorksheetFunction.Max。只需传递整个列即可
WorksheetFunction.Max
,但它需要将每个单元格作为输入进行比较(A列中有数千个单元格)
我考虑过按从高到低的值对列A进行排序,但我希望保留当前的顺序
有什么想法吗?我需要宏返回一个值,而不是一个公式
谢谢如果要在A列中找到最大值,无需将单个单元格传递给
Application.WorksheetFunction.Max
。只需传递整个列即可。比如说
Debug.Print Application.WorksheetFunction.Max(Columns("A:A"))
Application.WorksheetFunction.Max(ThisWorkbook.Sheets("Sheet1").Range("A1:A50"))
如果你想通过一个特定的范围,那么使用这个
Debug.Print Application.WorksheetFunction.Max(Range("A1:A50"))
以上就是一个例子。别忘了完全限定您的范围。比如说
Debug.Print Application.WorksheetFunction.Max(Columns("A:A"))
Application.WorksheetFunction.Max(ThisWorkbook.Sheets("Sheet1").Range("A1:A50"))
编辑
另一种方式。这将查找列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
@悉达多不真实。我发誓我把那条精确的线放进了VBA,收到了一个错误,但现在它100%工作了。也许我像个傻瓜一样漏掉了这些引语。谢谢。不用担心。)我在下面的答案中给你展示了两个例子:)