#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)