2016-01-28 4 views
0

Ищет помощь с помощью функции VBAФормула автозаполнения VBA

У меня есть данные на двух листах. Мне нужно выполнить совпадение индекса.

Размер данных будет меняться каждый раз, когда выполняется сравнение.

Я закодировал VBA для вызова данных и заполнения обоих листов, но выполнение сравнения вызывает проблему.

Я создал функцию ниже, ее работа без ошибок, но не заполнение формулы в ячейке, начиная J2 до конца диапазона J.

Sub FormulaFill() 

Dim strFormulas(1 To 1) As Variant 

With ThisWorkbook.Sheets("Export Worksheet") 
    strFormulas(1) = "=INDEX('sheet1'!E:E,MATCH('Export Worksheet'!A2,'sheet1'!A:A,0))" 

    .Range("J:J").FillDown 
End With 

End Sub 

Любая помощь была бы принята с благодарностью.

W

Изображения после изменения коды прикладного

enter image description here

ответ

1

Вы пишете формулу переменного массива, а не мобильный, то вы попытались заполнить весь столбец с помощью J:J. Это означает, что он пытался заполнить всю колонку содержимым ячейки J1, верхней ячейки, а не J2.

Вот код с исправлениями.

Sub FormulaFill() 

    With ThisWorkbook.Sheets("Export Worksheet") 
     .Cells(2, 10).Formula = "=INDEX('sheet1'!E:E,MATCH('Export Worksheet'!A2,'sheet1'!A:A,0))" 
     .Range(.Cells(2, 10), .Cells(.Cells(.Rows.Count, 9).End(xlUp).Row, 10)).FillDown 
    End With 

End Sub 

.Cells(.Rows.Count, 9).End(XlUp).Row определяет последнюю заполненную строку столбца 9 (I) и код использует это число в диапазоне использовать для автозаполнения колонны 10 (J)

+0

Большое спасибо за ответ, я обновил код. Теперь он заполняет формулу столбцу J, однако он заполняет формулу до конца всей книги, а не конец данных на листе. Я дал включенное изображение выше –

+0

Как и следовало ожидать, ваш оригинальный код сделал это, я предположил, что это было желаемое поведение. Я обновил код для остановки в последней заполненной строке на основе столбца 9 (I). – SilentRevolution

0

Это потому, что вы не заполняя ячейку формулой.

Sub FormulaFill() 

Dim strFormulas(1 To 1) As Variant 

With ThisWorkbook.Sheets("Export Worksheet") 

strFormulas(1) = "=INDEX('sheet1'!E:E,MATCH('Export  Worksheet'!A2,'sheet1'!A:A,0))" 
.Range("J1").Forumla = strFormulas(1) 

.Range("J:J").FillDown 
End With 

End Sub 
Смежные вопросы