【发布时间】:2018-10-18 13:50:02
【问题描述】:
一般来说,在 Excel 中获取给定列的最后一行很容易使用 VBA 中的用户定义函数完成:
Function lastRow(wsName As String, Optional columnToCheck As Long = 1) As Long
Dim ws As Worksheet
Set ws = Worksheets(wsName)
lastRow = ws.Cells(ws.Rows.Count, columnToCheck).End(xlUp).Row
End Function
对于最后一行,到目前为止我发现了两个 excel 公式:
=SUMPRODUCT(MAX((A:A<>"")*ROW(A:A)))=MAX(IFERROR(MATCH(E1+99,A:A),0),IFERROR(MATCH("zzz",A:A),0))
问题是第一个不起作用,如果范围内有错误,第二个不返回真正的最后一行,如果是错误,但最后一个非错误行,因此返回 6 而不是 7:
问题是如何得到一个返回 7 的公式,因为这是 A 列中使用的最后一行?虽然,这是一个错误。没有 VBA。
【问题讨论】:
-
=MAX(IFERROR(A:A<>"",1)*ROW(A:A))但它是一个数组公式。 -
@ScottCraner - 是的,看起来效果很好。有没有机会避免 ctrl+shift 部分?
-
这就是为什么我把它放在评论中,不认为你想要那个需要。但看起来你得到了答案。
标签: excel vba excel-formula