我想在excel中的列中找到填充的第n行,当我在实际的电子表格中测试它时,我有一个公式可以工作。但是我想使用.Evaluate()将这个值设置为宏中的一个变量。
在我说Dim firstRow As Long,firstRow = 0之后
在我说完之后:
firstRow = ActiveWorksheet.Evaluate("SMALL(IF($K:$K<>"", ROW($K:$K) - ROW($K$1) + 1), 2)")
firstRow仍然设置为0。
如何使变量等于公式计算的值?
我尝试在评估之后添加.Select,尝试将firstRow更改为Variant,但这些都没有工作。
发布于 2019-05-22 18:03:43
首先是ActiveSheet,其次是双倍的"
firstRow = Activesheet.Evaluate("SMALL(IF($K:$K<>"""", ROW($K:$K) - ROW($K$1) + 1), 2)")备注:
- ROW($K$1) + 1。On Error Resume Next。然后尽快用On Error Goto 0重新打开错误捕获,以捕获错误,以便处理这些错误。发布于 2019-05-22 18:12:20
一般来说,使用整列参考文献的评价方法是很费钱的。我知道使用一行代码通常很有诱惑力,但这通常只会降低性能。为了完成同样的任务,我建议使用Range.Find方法,这样就不会那么容易出错了:
Sub RangeFindMethod()
Dim rFind As Range
Dim firstRow As Long
With ActiveSheet.Columns("K")
Set rFind = .Find("*", .Cells(.Cells.Count), xlValues, xlWhole, , xlNext)
If Not rFind Is Nothing Then
Set rFind = .FindNext(rFind)
firstRow = rFind.Row
Else
firstRow = 1
End If
End With
MsgBox firstRow
End Subhttps://stackoverflow.com/questions/56262327
复制相似问题