Как найти все ячейки, содержащие нужную формулу?

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

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

Похожие статьи: