Формула массива в Excel, выполненная через VBA Без или без .ArrayFormula для динамического диапазона

Я пытаюсь «перевести» процедуру, которая ранее была выполнена без VBA на листе excel. Этот простой процесс заключался в том, чтобы вставить эту формулу массива: = {MAX (IF (C2: C355 = C2, F2: F355))} в ячейку CE2 и перетащить ее вниз в базу данных (которая является переменной).

Я хочу, чтобы это было сделано как часть макроса vba. Я попытался выполнить множество различных вариантов с циклическим переходом через набор переменных данных, но все время сталкивался с проблемами.

К ним относятся:

Dim i As Variant LastRow = Worksheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row For i = 2 To LastRow Cells(i, 83).FormulaArray = "=MAX(IF(cells(2,LastRow)= cells(5,i),cells(2,LastRow))" Next i 

Следующий код, похоже, работает, но мои попытки работать с кодом в динамическом цикле приводят к ошибкам:

 Range("CE2").FormulaArray = "=MAX(IF(C:C=C2,F:F))" 

Часто возникают ошибки: «Unanble для установки свойства FormulaArray класса диапазона».

Я замечаю, что формулы массива, размещенные на листе через VBA, довольно медленны. Я предполагаю, что есть способ достичь того же результата, что и моя формула через VBA, которая НЕ использует .VarriantArray? Я просмотрел MAX-функции VBA, но боюсь, что команды VBA немного над моей головой.

Любая помощь, которую кто-то может предоставить:

  1. Как перебрать динамический массив и поместить формулу массива на листе через макрос

или

  1. Достигните того же результата, что и моя формула массива, используя функции VBA, отличные от .ArrayFormula

Спасибо заранее!

Это без циклов с использованием FillDown:

 Dim LastRow As Long With Worksheets("Sheet1") LastRow = .Range("A" & .Rows.Count).End(xlUp).row .Cells(2, 83).FormulaArray = "=MAX(IF(" & .Range(.Cells(2, 3), .Cells(LastRow, 3)).Address(1, 1) & "=C2," & .Range(.Cells(2, 6), .Cells(LastRow, 6)).Address(1, 1) & "))" .Range(.Cells(2, 83), .Cells(LastRow, 83)).FillDown End With 

Кажется, у вас есть строки и столбцы Cells и я предполагаю, что вы хотите:

 Cells(i, 83).FormulaArray = "=MAX(IF(R2C3:R" & LastRow & "C3=R[0]C3,R2C5:R" & LastRow & "C5))" 
  • excel lookup value на другом листе и вернуть значение другого столбца из этого листа
  • Формула Excel или VBA: найдите адрес соответствия в отдельной таблице с двумя критериями столбца - нет вспомогательных столбцов
  • Excel - эта функция недействительна - как избавиться от нее?
  • Ошибка несоответствия типа при попытке вставить формулу соответствия индекса с помощью vba?
  • Имя столбца Excel Formula for Return
  • Справка Excel! 2 листа и несколько формул для сравнения данных
  • Извлечь URL из ячейки текста в Excel
  • Переменные названия листов в формуле sumifs excel
  • Формула массива, имеющая уникальные значения для раскрытия данных, без использования вспомогательной колонки
  • Формула, которая добавляет годы по результатам
  • Случайная строка из массива Excel
  • Interesting Posts

    Openpyxl: iter_rows / iter_cols Тип Ошибка

    Объединить, если else и vlookup в одно утверждение

    экспортировать все строки таблицы html с помощью pagenation для Excel

    Excel VBA Ошибка времени выполнения «424»: объект требуется при попытке сохранить и закрыть рабочую книгу

    Я хочу конкатенировать диапазон ячеек объявлений, включая запятые

    «UnicodeEncodeError: кодек charmap не может кодировать символы» при попытке проанализировать .xlsx с помощью openpyxl

    C # Экспорт в Excel

    Как сделать модуль запущенным на Листе 1, когда изменяется ячейка в листе 2?

    Как реализовать формулу в ячейках Excel с помощью VBA

    Объявление переменной, используемой в Excel, но определяющей ее извне

    Необходимо приостановить доступ к VBA 2016 для предотвращения фатальной ошибки Excel

    Двойные кавычки открытия и закрытия

    Передача имени вкладки для листа CSV excel

    Как писать на нулевой ячейке с помощью java?

    SSIS Динамическая совокупность имени файла Excel

    Давайте будем гением компьютера.