Страницы: 1
RSS
Еще раз о методе Find
 
Опять завис, очевидно по причине неполного понимания как работает метод FIND.  
 
Сравниваю два однорядных диапазона - горизонтальный и вертикальный методом Find. Организовал цикл - значения из одного диапазона последовательно подставляются и отыскиваются методом Find в другом диапазоне, который содержит пустые значения (по причине объединенных ячеек).    
 
Теперь вопрос - КАК работает метод FIND, чтобы понимать - что ему не хватает. Буквально недавно ZVI пояснял по поводу Find - ссылку не могу найти. Если кто помнит сбросьте ссылочку.  
 
СПАСИБО.
 
Затык в том, что Find не находит первого значения в диапазоне. Будто разбег просит. Я раньше с таким сталкивался, писал адрес диапазона на единицу ранее, таперь такой ход нежелателен. Если вариантов нет, буду организовывать повторный поиск в направлении xlPrevious.
 
Насколько я помню, первое значение не будет найдено в том случае, когда оно в первой строке. Она рассматривается как заголовок. Но это, вроде, обходили
 
Правильно ли я понимаю, что свойствами не обойдешь?    
Как обойти, примерно знаю (проверить первое значение, вернуть на ячейку выше, и т.п). Хотелось бы покороче.
 
Скорее всего придётся обходными путями. Впрочем, "нормальные герои всегда идут в обход" (с)
 
Все, покорил необузданного коня.    
Все-таки капризный метод, много тонкостей, которые быстро забываются...
 
{quote}{login=VovaK}{date=28.12.2009 01:37}{thema=}{post}Все, покорил необузданного коня. {/post}{/quote}  
Не поделитесь? :-)
 
поделитесь)
 
Расширил диапазон на единичку вверх с проверкой.  
 
Теперь вспоминаю как организовать поиск в горизонтальном диапазоне.  
ZVI писал, что Find по умолчанию осуществляет поиск сверху вниз слева направо.  
Если ничего не указывать для однорядных горизонтальных диапазонов поиск завершается на первой ячейке. Методом тыка ранее уже заставлял Find трудиться, сейчас подзабыл, но полагаю найду. Все равно есть желание разжевать.  
 
Уважаемый ZVI, если читаете пост, подскажите как укращать FIND...
 
{quote}{login=VovaK}{date=28.12.2009 03:09}{thema=}{post} вспоминаю как организовать поиск в горизонтальном диапазоне.{/post}{/quote}  
А если так:  
Sub Макрос1()  
Dim iRange As Range  
Set iRange = Rows(1).Find("Петя", LookAt:=xlWhole)  
  If Not iRange Is Nothing Then  
     iRange.Select  
  End If  
End Sub
 
Из переписки с KL по доработке UDF  
Проблема в том, что для правильной работы Find числовые значения должны быть видимы. Попробуйте установить с помощью Автоподбора Ширины правильную ширину столбцов на листе Лист2 и запустить пересчет на листе Лист1 J  
 
   
 
Кстати, правильнее эксплицитно указывать аргументы и начинать поиск после последней ячейки:  
 
   
 
Function fndad(dan As Range, etal As Variant) As String  
 
fndad = dan.Find(etal, dan(dan.Rows.Count, dan.Columns.Count), xlValues, xlWhole, xlByRows, xlNext).Address(, , xlR1C1)  
 
End Function
 
Еще один затык:    
 
Если Вы проверяете диапазон состоящий из объединенных ячеек, то объединенные ячейки должны полностью входить в проверяемый диапазон, иначе Find их не видит.
Страницы: 1
Читают тему
Наверх