Excel 2007 VBA获取活动单元格相对于其在某个范围内的位置的行号

我一直在殴打自己到死,试图找出这一点,我的谷歌search页面充满了访问的链接,因为我尝试用一​​百种不同的方式措辞我的search,没有成功!

我有一个范围,说A8:A17 ,活动单元格是A10 。 我如何获得A10的行数相对于范围内的第一个单元格A8 (我预计结果为3 )? 我想用这个值引用另一个单元格使用Range(exRange).Cells(exRow, 1) 。 我能想到的唯一办法就是循环遍历范围,直到循环数等于活动单元格的行,但是必须有一个更干净的方法来做到这一点!

使用属性:

 Sub bafedm() Dim Tabl As Range, r As Range Set Tabl = Range("A8:A17") Set r = Range("A10") MsgBox r.Row - Tabl.Row + 1 End Sub 

作为参考,这里是一些典型的矩形范围的其他属性和尺寸的代码:

 Sub range_reporter() Dim r As Range Dim nLastRow As Long, nLastColumn As Long Dim FirstRow As Long, nFirstColumn As Long ActiveSheet.UsedRange Set r = ActiveSheet.UsedRange nLastRow = r.Rows.Count + r.Row - 1 MsgBox ("last row " & nLastRow) nLastColumn = r.Columns.Count + r.Column - 1 MsgBox ("last column " & nLastColumn) nFirstRow = r.Row MsgBox ("first row " & nFirstRow) nFirstColumn = r.Column MsgBox ("first column " & nFirstColumn) numrow = r.Rows.Count MsgBox ("number of rows " & numrow) numcol = r.Columns.Count MsgBox ("number of columns " & numcol) End Sub 

怎么样:

 =MATCH(A10, $A$:$A18$, 0) //returns 3