Страницы: 1
RSS
VBA и WorksheetFunction, Использование функций листа в VBA
 
Здравствуйте,

необходимо в VBA трансформировать формулу:

=СУММ(ИНДЕКС(AR23:BX23;ПОИСКПОЗ($R$11;$AR$14:$BX$14;0)):ИНДЕКС(AR23:BX23;ПОИСКПОЗ($T$11;$AR$14:$BX$14;0)))

мой вариант (но не работает):
Код
Public Function CDSDayReport_a1(DateStart As Range, DateEnd As Range, Dates As Range, Volumes As Range)
    CDSDayReport_a1 = WorksheetFunction.Sum(WorksheetFunction.Index(Volumes, WorksheetFunction.Match(DateStart, Dates, 0)) : WorksheetFunction.Index(Volumes, WorksheetFunction.Match(DateEnd, Dates, 0)))
End Function


В чём-то есть "ньюанс". Поэтапно записывал, работало, как дошёл до .Sum так сломалось. Возможно необходимо цикл вместо Суммы. Я незнаю.

Подскажите, кто знает.

 
Нужна именно формула с функциями листа или нужно решить проблему?
Название темы должно отржаать конкретную задачу. Предлагайте. Заменят модераторы.
Прикрепите к первому сообщению небольшой пример.

Помощь скрыта до устранения замечаний
 
Пример к прошлому сообщению.

В желтой заливке - реализация на формулах листа.
В голубой заливке - реализация на VBA.

Оригинальный документ имеет объем > 6Мб, свыше 2 тыс. строк. При открытии файла на формулах листа время составляет 19,05 с. При открытии на VBA - 28,80 с. Я хотел третий вариант - в модуле VBA применить WorksheetFunction и сравнить время загрузки.

Конечная идея - защитить данный файл от возможности его частичного или полного копирования, использования другими лицами в прочих задачах. Защищаю свою "интеллектуальную собственность", модуль с функциями хочу вынести в PERSONAL библиотеку, которую защищу от просмотра.
Изменено: Владислав Сескутов - 19.01.2021 14:47:56 (Добавил файл)
 
Не будет реакции на сообщение №2 - тема под удаление.
Страницы: 1
Наверх