Страницы: 1
RSS
После добавления пользовательской функции сильно тормозит Excel
 
Добрый день!
После добавления пользовательской функции с данного сайта:
https://www.planetaexcel.ru/techniques/7/205/
сильно тормозит Excel, можно ли что-то сделать, чтобы избавиться от "тормозов"?

Код
Function MergeIf(TextRange As Range, SearchRange As Range, Condition As String)
    Dim Delimeter As String, i As Long
    Delimeter = ", " 'символы-разделители (можно заменить на пробел или ; и т.д.)
     
    'если диапазоны проверки и склеивания не равны друг другу - выходим с ошибкой
    If SearchRange.Count <> TextRange.Count Then
        MergeIf = CVErr(xlErrRef)
        Exit Function
    End If
     
    'проходим по все ячейкам, проверяем условие и собираем текст в переменную OutText
    For i = 1 To SearchRange.Cells.Count
        If SearchRange.Cells(i) Like Condition Then OutText = OutText & TextRange.Cells(i) & Delimeter
    Next i
     
    'выводим результаты без последнего разделителя
    MergeIf = Left(OutText, Len(OutText) - Len(Delimeter))
End Function
Если не спросить — никогда не узнаешь, если знаешь — нужно лишь спросить.
 
Выложите пример файла Excel, "похожий" на фрагмент реального. Далее, укажите реальные размены диапазона для поиска, количество вызовов функции, время выполнения.
Владимир
 
Цитата
flower написал:
можно ли что-то сделать
1. У вас есть необъявленная переменная "OutText"
2. Не используйте свойства языка vba (тут: "TextRange") в качестве имен переменных
3. Измените текстовую переменную ("OutText"), которая создает конкатенацию, на переменную массива (конечно, вам нужно изменить код функции)
Может такое изменение в чём-то поможет ... (?)
 
flower, используйте более шустрый аналог — СцепитьЕсли
Если и с ним будет тупить, то пора пересчитывать в коде (по кнопке или событию) и выгружать на лист (оформить код в виде процедуры, а не функции листа)
Изменено: Jack Famous - 16.08.2020 19:45:48
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous, Спасибо!!! С вашей подсказки Excel заработал!))
Если не спросить — никогда не узнаешь, если знаешь — нужно лишь спросить.
Страницы: 1
Наверх