У меня есть функция Excel VBA, которая сравнивает два диапазона и возвращает значения ячеек в диапазоне A, которых нет в диапазоне B. Теперь я хотел бы отобразить список пропущенных значений в другом листе Excel. Диапазоны А и В имеют длину сотен клеток. Пропущенные значения из A в B обычно могут быть от 0 до дюжины или двух. Меня не интересует просто выделение ячеек с условным форматированием.
Функция вызывается несколько раз на одном листе, создавая таблицу. Выходные данные выглядят так: ![Example Table](https://i.stack.imgur.com/Yne1B.png)
Мое текущее решение - создать выходной диапазон для каждого столбца с формулой массива (Control Shift Enter), которая вызывает мою функцию. {=MyFormula(range1, range2)}
. С параметром, отличающимся для формулы массива каждого столбца.
Внутри функции я затем устанавливаю выходной массив таким же размером, что и диапазон формул массива:
With Application.Caller
CallerRows = .Rows.Count
CallerCols = .Columns.Count
End With
ReDim Result(1 To CallerRows)
По мере заполнения Result
если только заполнить его N-1 пробелами с результатом, а в N-е место я поместил что-то вроде «еще 4 записи ...»
Очевидно, что это несколько неловко, поскольку данные потеряны , Конечно, я мог бы просто еще больше расширить диапазон CSE, но в таком случае go, если я сделаю это 25 строками, завтра я обязательно получу экземпляр, где будет найдено 26 отличий.
На мой вопрос:
- Есть ли способ динамического изменения диапазона формулы массива?
- ИЛИ мне как-то просто сделать необработанную вставку значений в обычные ячейки (при условии, что под выходным диапазоном больше нет данных, поэтому я могу добавить как можно больше записей)?
Я предполагаю, что первое, вероятно, невозможно, но я хочу подтвердить.
Так что, если я go со вторым параметром, каков наилучший способ сделать это, сохраняя вызов функции в ячейка, а не кнопка «повторное заполнение» и т. п.
По независящим от меня причинам в настоящее время я ограничен Excel 2013 для этого приложения.