excel vba UDF в цикле массива

У меня есть UDF, который просто делает sumif. Он работает, когда я использую его в ячейке или в цикле «Для каждой ячейки в диапазоне XYZ», но не тогда, когда я петлю через массив.

У меня есть лист со списком учетных записей и идентификационными номерами элементов в столбцах A и B, а затем я добавляю около 20 столбцов данных из нескольких источников и формул. Я делаю что-то вроде этого:

Dim array() as variant, ACCT as string, ID as string, lr as long lr = Range("A1048576").end(xlup) array=Range("A1:Z" & lr) For i=1 to ubound(array) ACCT=array(i,1):ID=array(i,2) array(i,3)=DataSource1(ACCT,ID) array(i,4)=DataSource2(ACCT,ID) 

и т.д…

Функция DataSource1 не дает мне никаких проблем, но функция DataSource2 возвращает 0. Обе функции почти идентичны, за исключением того, что DataSource2 использует find для создания динамических диапазонов, поскольку столбцы не всегда находятся в одном порядке. И, как я уже сказал, он работает, если я прохожу через каждую ячейку диапазона вместо использования массива.

 Function DataSource2_Qty(ACCT As String, ID As String) Dim rng As Range, lr As Long, ACCTS As Range, DATA As Range, _ IDs As Range, Qty As Range, DATASht as Worksheet Set DATASht = Sheets("DataSource2_SECURITY_DATA") Set DATA = DATASht.UsedRange lr = DATA.Rows.Count Set rng = DATA.Cells.Find("Account", searchorder:=xlByColumns, Lookat:=xlWhole) Set ACCTS = DATASht.Range(DATA.Cells(1, rng.Column), DATA.Cells(lr, rng.Column)) Set rng = DATA.Cells.Find("Security Id", searchorder:=xlByColumns, Lookat:=xlWhole) Set IDs = DATASht.Range(DATA.Cells(1, rng.Column), DATA.Cells(lr, rng.Column)) Set rng = DATA.Cells.Find("Quantity", searchorder:=xlByColumns, Lookat:=xlWhole) Set Qty = DATASht.Range(DATA.Cells(1, rng.Column), DATA.Cells(lr, rng.Column)) DataSource2_Qty = Application.SumIfs(Qty, IDs, ID, ACCTS, ACCT) End Function 

  • VBA UDF работает при тестировании, но не при использовании в excel
  • Генерация комбинаций атрибутов продукта в Excel
  • Повторно оценивать нестабильный UDF автоматически
  • Невозможно записать строку в ячейке из UDF
  • Использование VBA для разбора и разделения строки с помощью подстановочных знаков?
  • Как превратить формулу Excel в UDF?
  • Excel VBA: Если ... затем выйти из UDF без изменения значения ячейки
  • Пользовательская функция Возврат #Value
  • Определенная пользователем функция в VBA не работает и возвращает ноль, несоответствие типа данных
  • Функция возврата «слишком низкая», «слишком высокая» или «ОК» для каждой ячейки в диапазоне
  • UDF: для значений ячейки меньше, чем x в столбце, возвращайте все значения из первого столбца
  • Давайте будем гением компьютера.