Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Скорость преобразования функции CInt() - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Скорость преобразования функции CInt() (Макросы/Sub)
Скорость преобразования функции CInt()
pabchek Дата: Четверг, 26.01.2017, 10:58 | Сообщение № 1
Группа: Проверенные
Ранг: Ветеран
Сообщений: 931
Репутация: 218 ±
Замечаний: 0% ±

Excel 2007
Доброго дня!
Подскажите начинающему, плз.
Попробовал сделать пользовательскую функцию чтобы не писать каждый раз коротенькую формулу. И столкнулся с тем, что макрос работает очень медленно, тогда как формула практически мгновенно.
В примере всего 5 тыс. строк, а в рабочих файлах сотни тысяч. Тормозит серьезно.
Формула
Код
=--НЕ(A2=B2)

Функция
[vba]
Код
Function Не_равно(x, y)
    Не_равно = -CInt(x = y)
End Function
[/vba]
К сообщению приложен файл: 1866852.xlsb (92.7 Kb)


"Учиться, учиться и еще раз учиться!"
WM: R399923528092
 
Ответить
СообщениеДоброго дня!
Подскажите начинающему, плз.
Попробовал сделать пользовательскую функцию чтобы не писать каждый раз коротенькую формулу. И столкнулся с тем, что макрос работает очень медленно, тогда как формула практически мгновенно.
В примере всего 5 тыс. строк, а в рабочих файлах сотни тысяч. Тормозит серьезно.
Формула
Код
=--НЕ(A2=B2)

Функция
[vba]
Код
Function Не_равно(x, y)
    Не_равно = -CInt(x = y)
End Function
[/vba]

Автор - pabchek
Дата добавления - 26.01.2017 в 10:58
Pelena Дата: Четверг, 26.01.2017, 11:19 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19184
Репутация: 4420 ±
Замечаний: ±

Excel 365 & Mac Excel
Здравствуйте.
Почему CInt, а не Not?


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеЗдравствуйте.
Почему CInt, а не Not?

Автор - Pelena
Дата добавления - 26.01.2017 в 11:19
buchlotnik Дата: Четверг, 26.01.2017, 11:22 | Сообщение № 3
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация: 929 ±
Замечаний: 20% ±

2010, 2013, 2016 RUS / ENG
а может проще так?
[vba]
Код
Function Не_равно(x, y)
    Не_равно = Not (x=y)
End Function
[/vba]


Сообщение отредактировал buchlotnik - Четверг, 26.01.2017, 11:29
 
Ответить
Сообщениеа может проще так?
[vba]
Код
Function Не_равно(x, y)
    Не_равно = Not (x=y)
End Function
[/vba]

Автор - buchlotnik
Дата добавления - 26.01.2017 в 11:22
pabchek Дата: Четверг, 26.01.2017, 11:32 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 931
Репутация: 218 ±
Замечаний: 0% ±

Excel 2007
Почему CInt, а не Not?

а может проще так?

ответ один - потому что чайник))
Но.... работает так же медленно
И дает булево значение, а не цифру


"Учиться, учиться и еще раз учиться!"
WM: R399923528092


Сообщение отредактировал pabchek - Четверг, 26.01.2017, 11:35
 
Ответить
Сообщение
Почему CInt, а не Not?

а может проще так?

ответ один - потому что чайник))
Но.... работает так же медленно
И дает булево значение, а не цифру

Автор - pabchek
Дата добавления - 26.01.2017 в 11:32
pabchek Дата: Четверг, 26.01.2017, 11:43 | Сообщение № 5
Группа: Проверенные
Ранг: Ветеран
Сообщений: 931
Репутация: 218 ±
Замечаний: 0% ±

Excel 2007
Булево поборол
[vba]
Код
Function Не_равно(x, y)
    Не_равно = -Not (x = y)
End Function
[/vba]
Скорость нет


"Учиться, учиться и еще раз учиться!"
WM: R399923528092
 
Ответить
СообщениеБулево поборол
[vba]
Код
Function Не_равно(x, y)
    Не_равно = -Not (x = y)
End Function
[/vba]
Скорость нет

Автор - pabchek
Дата добавления - 26.01.2017 в 11:43
buchlotnik Дата: Четверг, 26.01.2017, 12:08 | Сообщение № 6
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация: 929 ±
Замечаний: 20% ±

2010, 2013, 2016 RUS / ENG
а какова конечная цель? функцию в личную книгу макросов положить, или это для конкретного файла?
 
Ответить
Сообщениеа какова конечная цель? функцию в личную книгу макросов положить, или это для конкретного файла?

Автор - buchlotnik
Дата добавления - 26.01.2017 в 12:08
pabchek Дата: Четверг, 26.01.2017, 12:32 | Сообщение № 7
Группа: Проверенные
Ранг: Ветеран
Сообщений: 931
Репутация: 218 ±
Замечаний: 0% ±

Excel 2007
В личную книгу. Для конкретного можно и просто формулу один раз написать))
Да и просто интересно. Как сделать чтобы быстро было.


"Учиться, учиться и еще раз учиться!"
WM: R399923528092


Сообщение отредактировал pabchek - Четверг, 26.01.2017, 12:33
 
Ответить
СообщениеВ личную книгу. Для конкретного можно и просто формулу один раз написать))
Да и просто интересно. Как сделать чтобы быстро было.

Автор - pabchek
Дата добавления - 26.01.2017 в 12:32
_Boroda_ Дата: Четверг, 26.01.2017, 15:44 | Сообщение № 8
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
макрос работает очень медленно, тогда как формула практически мгновенно

Виктор, тут дело в том, что зашитые в Excel формулы написаны на С++, а он быстрее VBA
Также VBA вроде не поддерживает многопроцессорность, а большинство формул поддерживают
Поэтому для стандартных случаев обычно функции пользователя медленнее встроенных.


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
макрос работает очень медленно, тогда как формула практически мгновенно

Виктор, тут дело в том, что зашитые в Excel формулы написаны на С++, а он быстрее VBA
Также VBA вроде не поддерживает многопроцессорность, а большинство формул поддерживают
Поэтому для стандартных случаев обычно функции пользователя медленнее встроенных.

Автор - _Boroda_
Дата добавления - 26.01.2017 в 15:44
pabchek Дата: Пятница, 27.01.2017, 09:29 | Сообщение № 9
Группа: Проверенные
Ранг: Ветеран
Сообщений: 931
Репутация: 218 ±
Замечаний: 0% ±

Excel 2007
С++, а он быстрее VBA

Александр, как всегда, все доходчиво и понятно. Спасибо!


"Учиться, учиться и еще раз учиться!"
WM: R399923528092
 
Ответить
Сообщение
С++, а он быстрее VBA

Александр, как всегда, все доходчиво и понятно. Спасибо!

Автор - pabchek
Дата добавления - 27.01.2017 в 09:29
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Скорость преобразования функции CInt() (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!