|
昨天在此发帖求助:工作表中有一列数,想通过程序确定从某行开始第一个负数出现的行号。例如,从第三行开始,第一个负数出现在第6行,这个第6行的行号用程序定位并返回在c列相应单元格里;同理,从第8行开始,第一个负数出现在第11行;从第15行开始,第一个负数出现在第20行。只要在b列输入“起始行号”,则定位结果分别返回到c列相应单元格里。
感谢超级版主"爱疯"给我的回答是:
Function lastRow(x As Range) As Integer
Dim r%, i%
lastRow = -1 '表示找不到
r = ActiveSheet.UsedRange.Rows.Count
For i = x To r
If Cells(i, 1) < 0 Then lastRow = i: Exit For
Next i
End Function
这个函数运行效果不错,但是如图所示,当该列数的最后几个数都是正数时,例如从第21行开始,后面不再有负数,此时函数计算结果为"-1"。而我希望:如果某一数字的后面直到结尾都不再有负数出现,则在c列相应区域返回原始数据最后一行的行号。例如,在b5单元格输入“21”作为起始行号时,则在c5单元格返回23.
自己刚开始学VBA,修改了好长时间还是搞不定,麻烦哪位高手帮我看看上面的程序该怎么改才能达到这个效果。
这样试试 - Function lastRow(x As Range) As Integer
- Dim r%, i%
- r = Cells(Rows.Count, 1).End(3).Row
- lastRow = r '表示找不到
- For i = x To r
- If Cells(i, 1) < 0 Then lastRow = i: Exit Function
- Next i
- End Function
复制代码
|
|