我有一个宏,它循环遍历A列中的所有值,并向选定的单元格返回最大值加1。
我一直在尝试寻找一种更有效的方法来完成相同的任务,并且没有好的解决方案。我尝试使用,WorksheetFunction.Max
但是它要求将每个单个单元格作为输入进行比较(A列中有数千个单元格。)
我考虑过按最高到最低的值对A列进行排序,但是我想保留当前顺序。
有任何想法吗?我需要宏来返回值而不是公式。
谢谢
Application.WorksheetFunction.Max
如果要在Col A中找到最大值,则无需传递单个单元格。只需传递整列即可。例如
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句