Скопируйте формулы в Последнюю строку

#excel #vba #excel-formula

Вопрос:

У меня есть книга Excel, которую я запускаю из средства создания отчетов.

На листе «Данные», в ячейках I2, J2, K2, L2 и M2 у меня есть формулы.

Я ищу скрипт VBA, который будет перетаскивать формулы в этих ячейках туда, где может быть последняя строка. Col A можно использовать для определения номера последней строки.

Я искал сценарий, который работает, но я изо всех сил пытаюсь его найти. Пожалуйста, пусть кто-нибудь поможет мне в этом. Ниже приведен скриншот статических формул, которые находятся в этих 5 ячейках.

введите описание изображения здесь

 Range("I2:I" amp; LastRow).Formula = "=IF(L2=1,IF(F2-E2gt;0,E2,IF(F2-E2lt;=0,F2,0)),IF(F2-E2gt;0,E2,IF(F2-E2lt;=0,F2-I1,0)))"  

Комментарии:

1. Диапазон(«I2:I» и последний). Формула = «=ЕСЛИ(L2=1,ЕСЛИ(F2-E2gt;0,E2,ЕСЛИ(F2-E2gt;lt;=0,F2,0)),ЕСЛИ(F2-E2gt;0,E2,ЕСЛИ(F2-E2lt;=0,F2,0)),ЕСЛИ(F2-E2gt; Я не очень хорошо разбираюсь в VBA. Это не работает

2. Как у тебя дела LastRow ? Какова его ценность, когда вы запускаете эту строку кода и получаете сообщение об ошибке?

Ответ №1:

Предполагая, что ваша формула работает, может быть, попробуйте :

 Lastrow = Range("H" amp; Rows.Count).End(xlUp).Row Range("I2") = "=IF(L2=1,IF(F2-E2gt;0,E2,IF(F2-E2lt;=0,F2,0)),IF(F2-E2gt;0,E2,IF(F2-E2lt;=0,F2-I1,0)))" Range("I2:I" amp; LastRow).FillDown  

Комментарии:

1. Спасибо. Я получаю ошибку времени выполнения 1004 «Метод» Диапазон » объекта _Global не удался

2. @GrayMeiring та же ошибка, что и раньше ?

3. @GrayMeiring Попробуйте отредактировать

4. Поскольку столбец I еще не заполнен, нет смысла использовать его для определения последней строки.

5. @braX не видел скриншота, я переключил столбец I на H

Ответ №2:

Введите формулу в I2 :

 Range("I2").Formula = "=IF(L2=1,IF(F2-E2gt;0,E2,IF(F2-E2lt;=0,F2,0)),IF(F2-E2gt;0,E2,IF(F2-E2lt;=0,F2-I1,0)))"  

Затем используйте отдельную строку для автоматического заполнения последней строки

 Range("I2").AutoFill Range("I2:I" amp; LastRow)  

Так вот как это :

 Range("I2").Formula = "=IF(L2=1,IF(F2-E2gt;0,E2,IF(F2-E2lt;=0,F2,0)),IF(F2-E2gt;0,E2,IF(F2-E2lt;=0,F2-I1,0)))"  Range("I2").AutoFill Range("I2:I" amp; LastRow)