Найти все ячейки, содержащие нужную формулу- Visual Basic(Бейсик)

Для того, чтобы получить диапазон содержащий все ячейки, в которых находится нужная формула, достаточно использовать нижеприведённый вариант, указав, естественно, свою рабочую книгу, рабочий лист, диапазон и формулу.

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(*)" - это текст искомой формулы, в моём примере, это стандартная функция рабочего листа =ПРОМЕЖУТОЧНЫЕ.ИТОГИ()

Leave a Comment