我将如何获取某个范围内某个单元格的相对位置?使用Row
-和Column
-properties在工作表中查找单元格的位置很简单,但是我不确定如何在一定范围内执行相同操作。
我考虑过在要查找单元格位置的范围内使用左上角单元格的位置,然后从工作表中单元格的位置中减去(-1),但是有点麻烦。有没有更优雅的方法可以做到这一点?
到目前为止,我最大的尝试(包括测试)是:
Option Explicit
Sub test()
Dim r As Range: Set r = Sheet1.Range("B2:E10")
Dim c As Range: Set c = Sheet1.Range("C2")
Debug.Print "Column in sheet: " & c.Column
Debug.Print "Row in sheet: " & c.Row
Debug.Print "Column in range: " & column_in_range(r, c)
Debug.Print "Row in range: " & row_in_range(r, c)
End Sub
Function column_in_range(r As Range, c As Range) As Long
column_in_range = c.Column - (r.Cells(1, 1).Column - 1)
End Function
Function row_in_range(r As Range, c As Range) As Long
row_in_range = c.Row - (r.Cells(1, 1).Row - 1)
End Function
这将提供所需的输出:
Column in sheet: 3
Row in sheet: 2
Column in range: 2
Row in range: 1
但是我想知道是否可以使用任何本机功能?
使用提供的变体更新 lori_m
但是我想知道是否有任何本机功能...
用这个
Sub test()
Dim r As Range, c As Range
With Sheet1
Set r = .[B2:E10]
Set c = .[C2]
End With
If Not Intersect(r, c) Is Nothing Then
Debug.Print "Column in sheet: " & c.Column
Debug.Print "Row in sheet: " & c.Row
Debug.Print "Column in range: " & Range(r(1), c).Columns.Count
Debug.Print "Row in range: " & Range(r(1), c).Rows.Count
End If
End Sub
输出
Column in sheet: 3
Row in sheet: 2
Column in range: 2
Row in range: 1
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句