Использование Range () с формулами массива в Excel 2013

Я имею формулу VBA, скажем

Range("B2:B" & Cells(Rows.Count, "A").End(xlUp).Row).FormulaArray = "=MATCH(RC[-1],Sheet1!C1,0)" 

Когда я запускаю макрос, он вводит это в каждую ячейку

 =MATCH(A2,Sheet1!A:A,0) 

Я хочу, чтобы RC[-1] аргумент возвращал ячейки A2, A3, A4 и т. Д. В настоящее время он возвращает A2 для всех строк. Как мне это сделать?

Я также пробовал ActiveCell.FormulaArray и цикл for, но он слишком медленный для количества строк, которые у меня есть.

Как указано во всех комментариях:

Сначала вам нужно ввести его в B2, а затем заполнить до конца.

.FormulaArray будет рассматривать его так, как если бы вы выделили весь диапазон и поместили формулу в первую ячейку, а затем нажмите Ctrl-Shift-Enter, который вводит ту же формулу во всех ячейках.

 Range("B2").FormulaArray = "=MATCH(RC[-1],Sheet1!C1,0)" Range("B2:B" & Cells(Rows.Count, "A").End(xlUp).Row).FillDown 

Попробуйте изменить FormulaArray на FormulaR1C1

 Range("B2:B" & Cells(Rows.Count, "A").End(xlUp).Row).FormulaR1C1 = "=MATCH(RC[-1],Sheet1!C1,0)" 

Благодаря!!!

  • Ошибки PivotCaches.Add
  • Сравнение двух строк и выделение непревзойденного содержимого
  • Защита ячеек в excel с помощью vb.net
  • Как пропустить один столбец в Excel с помощью VBA до пустой ячейки и заменить часть этой ячейки?
  • Формат Excel из Access VBA
  • Добавить итоговую строку для столбцов D - M
  • Как получить диапазон (область печати) из Excel?
  • Сценарии Formulatext
  • Вытягивание данных с помощью «Combo Box (Form Control)»
  • Как централизовать текст в слайсерке excel 2013
  • Excel и RabbitMQ - обрабатывать сообщения RabbitMQ в Excel?
  • Давайте будем гением компьютера.