Страницы: 1
RSS
Лучше чем Find, который не работает с ячейками, с более 255 знаками
 
Доброго дня. Подскажите пожалуйста способ поиска(лучше/проще/быстрее) чем Find, который не хочет работать с ячейками с содержанием больше 255 знаков.
Пробовал Vlookup, но он тоже останавливается на просмотре такой "толстой" ячейке.

Таблица с примером во вложении. Если настроить Find по целой ячейке(xlWhole) - макрос сработает отлично, кроме одной злосчастной строки. Если настроить по целой части ячейки(xlPart) макрос сработает полностью, но не правильно.
Смысл простой - перенести "значения" из таблицы 1 в таблицу 2, по названию "Шапки2". Теоретически таблица 2 в неточном Range и вообще в другой книге, поэтому для вставки также пользуемся поиском "шапки2".
Не перестаю удивляться возможностям excel и VBA.
 
В свое время приходилось работать с длинными комбинациями текста из множества ячеек и ВПРить их по всякому.

Решили проблему кардинально, макросом считали MD5 хэш и уже по нему подтягивали значения.
 
Интересно, попробую изучить, кажется у меня задача не настолько глобальная))
Пока думаю на счет условия, мол если ошибка - ищи по "Шапке1". Думаю так уберу основную массу ошибок. Но к сожалению это не "победа" над вопросом выше(.  
Не перестаю удивляться возможностям excel и VBA.
 
Как вариант. См. файл
Код
Function ВПР2(искомое_значение As Range, Таблица As Range, номер_столбца As Long)
Dim arr, i As Long
        
        arr = Таблица
        For i = 1 To UBound(arr, 1)
            If arr(i, 1) = искомое_значение.Text Then
                ВПР2 = arr(i, номер_столбца)
                Exit Function
            End If
        Next i
End Function
Изменено: New - 19.10.2020 16:20:56
 
Владимир Шаматонов, здравствуйте, проверяйте
Код
New, если есть возможность, то прикрепляйте код из файла под спойлер, чтобы не дублировать решения

Название темы: Макрос вместо ВПР (для строк длиннее 255 символов)
Изменено: Jack Famous - 20.10.2020 09:28:59
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Спасибо. Решения работают и очень интересны. в целом около понятно - нужно уходить от Find, к более гибким решениям,т.к. например нет необходимости поиска части строки. В данном случае только через циклы и сравнения ячеек или ключей.

Решение New выглядит проще и универсальнее. на его примере попробую построить решение для себя, т.к. основной процесс сильно от примера отличается.
Jack Famous, буду изучать Dictionary) Уверен его можно настроить в основной код, добавив в ключи, например имена книг и номера столбцов, но на это нужно будет потратить мне не один вечер)
Не перестаю удивляться возможностям excel и VBA.
 
Цитата
Владимир Шаматонов: нужно уходить от Find,
лично я .Find использую только для поиска по формату ячейки
Цитата
Владимир Шаматонов: нет необходимости поиска части строки
поиск по маске (по части строки) легко осуществляется и без .Find
Цитата
Владимир Шаматонов: выглядит проще и универсальнее
зато медленнее, но может вам скорость и не нужна — зависит от объёма.
Нужно понимать, что работа с массивами в виде функции пользователя вот так "в лоб" чревата очень серьёзными тормозами уже на средних объёмах, т.к. для каждого очередного значения необходимо каждый раз пробегать целый массив. В словарях же есть метод .Exist, позволяющий определить наличие ключа в словаре очень быстро. И, несмотря на это, я всё равно сделал в виде макроса вставки
Цитата
Владимир Шаматонов: буду изучать Dictionary
вот вам отличная статья + закомментирую основные строки кода, чтобы показать, что там нет ничего сложного
Изменено: Jack Famous - 20.10.2020 09:33:26
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Страницы: 1
Наверх