Как мне получить относительное положение ячейки внутри диапазона? Поиск позиции ячейки на листе тривиально, используя 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
Но мне интересно, есть ли какие-то собственные функции, которые я могу использовать вместо этого?