1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | Для того, чтобы получить диапазон содержащий все ячейки, в которых находится нужная формула, достаточно использовать нижеприведённый вариант, указав, естественно, свою рабочую книгу, рабочий лист, диапазон и формулу. Private Sub getRangeWithFormulas() iMaskFormula$ = "=SUBTOTAL (*)" 'Здесь необходимо указать свой шаблон искомой формулы With ThisWorkbook.Worksheets(1).UsedRange Dim iCell As Range, iDiapazon As Range Set iCell = .Find( _ What:=iMaskFormula$, LookIn:=xlFormulas, LookAt:=xlWhole) If Not iCell Is Nothing Then iAddress$ = iCell.Address Set iDiapazon = iCell Do Set iCell = .FindNext(After:=iCell) Set iDiapazon = Union(iCell, iDiapazon) Loop While iCell.Address <> iAddress$ 'Здесь Вы можете работать с полученным диапазоном, 'который всегда будет содержать, как минимум, одну ячейку End If End With End Sub Предполагается, что: ThisWorkbook - это текущая рабочая книга, т.е. книга в которой содержится выполняемый, в настоящий момент, код. Worksheets(1) - это первый рабочий лист указанной книги. UsedRange - это диапазон, в котором осуществляется поиск. "=SUBTOTAL(*) " - это текст искомой формулы, в моём примере, это стандартная функция рабочего листа =ПРОМЕЖУТОЧНЫЕ.ИТОГИ() |