Пользовательские функции, написанные в Excel VBA, работают намного медленнее, чем функции, просто написанные на ячейках листа. Есть ли способ запустить их быстрее? В качестве примера у меня есть очень простой и определенные пользователем функции:Ускорьте простые пользовательские функции
Function myweekday(mydate As Double)
myweekday = Weekday(mydate)
End Function
В основном это делает то же самое, что встроенная функция = будний день(). Однако выполнение этого на 50 000 ячеек занимает около 5 секунд для вычисления, тогда как простое использование встроенной функции занимает долю секунды.
Что я могу сделать, чтобы пользовательские функции выполнялись быстрее?
Почему бы вам создать пользовательскую функцию, которая предлагает меньше функциональных возможностей, чем любой из рабочего листа [функции WEEKDAY] (https://support.office.com/en-us/article/Weekday-Function- 05D360D7-2C3F-4691-9448-C96EA0351940) или VBA [функция дня недели] (https://msdn.microsoft.com/en-us/library/82yfs2zh%28v=vs.90%29.aspx)? – Jeeped
@ Jeeped Мое единственное предположение, что Алекс в конечном итоге хочет сделать UDF более сложным, но видит, возможно ли даже получить скорость UDF, где они хотят, чтобы это было на чем-то очень базовом. – rwilson
@ Jeeped Да, rwilson находится прямо на отметке. Разумеется, UDF бессмысленна, но я хочу видеть, может ли что-то даже такое простое, что можно работать на приличной скорости. –