我有一个循环遍历A列中所有值的宏,并将最高值加1返回到所选单元格。
我一直在努力想出一种更有效的方法来完成同样的任务,而且没有好的解决方案。我尝试使用WorksheetFunction.Max
但它需要将每个单元格作为输入进行比较(A列中有数千个单元格。)
我考虑过将值A从最高到最低的值排序,但我想保留当前的订单。
有什么想法吗?我需要宏来返回值而不是公式。
由于
答案 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