Range / Метод
Range.Find
Найти — Ищет значение в диапазоне, как диалог «Найти».
Find(What, [After], [LookIn], [LookAt], [SearchOrder], [SearchDirection], [MatchCase], [MatchByte], [SearchFormat]) As Range
Параметры
| Имя | Тип | Описание | |
|---|---|---|---|
What |
Variant | обяз. | Что искать. |
LookIn |
Variant | необяз. | xlValues, xlFormulas, xlComments. |
LookAt |
Variant | необяз. | xlWhole — точное совпадение ячейки, xlPart — вхождение. |
Когда использовать
Вместо цикла по ячейкам. Всегда проверяйте Nothing. Параметры запоминаются между вызовами.
Версии и среда
Excel 2007–365
Минимальный пример
Dim found As Range
Set found = ws.Columns(1).Find(What:="Итого", LookIn:=xlValues, LookAt:=xlWhole)
If found Is Nothing Then Exit Sub
Debug.Print found.Address
Типичный сбой
LookAt и MatchCase остаются от прошлого поиска — задавайте их каждый раз.
Рецепты
-
Найти значение без цикла по ячейкам
Нужно найти строку по коду в столбце A.
-
Перенести заливку строк из старой книги в новую
Новая книга покупок без цветов, а в старой строки уже размечены заливкой — нужно перенести разметку по совпадению значения.
Рядом в Range
Copy PasteSpecial ClearContents SpecialCells Value Value2 Text Formula