Если ячейка A1 содержит формулу =AVERAGE(C50:C110)
, то
Debug.Print Range("A1").Precedents.Address(RowAbsolute:=False, ColumnAbsolute:=False)
вернет C50:C110
. Если есть больше прецедентных ячеек, адреса разделяются запятыми, например, =AVERAGE(C50:C110)+B5
приводит к C50:C110,B5
.
В качестве альтернативы вы можете l oop через области прецедентов, чтобы получить все адреса отдельно.
Dim iArea As Range
For Each iArea In Range("A1").Precedents
Debug.Print iArea.Address(RowAbsolute:=False, ColumnAbsolute:=False)
Next iArea
Чтобы получить начальную и конечную строку прецедентного адреса, вы можете просто выполнить некоторые вычисления строки:
Dim rng As Range
Set rng = Range("YourAvrCell")
Debug.Print rng.Precedents.Address(RowAbsolute:=False, ColumnAbsolute:=False)
Debug.Print rng.Precedents.Row
Debug.Print rng.Precedents.Rows.Count + r.Precedents.Row - 1