Страницы: 1
RSS
Как корректно прописать формулу в VBA
 
Здравствуйте, знатоки! Очень нужна помощь . Есть такой код. К нему в дальнейшем планируется добавить еще несколько переменных и соответственно диапазонов. Пока что не получается рассчитать значения в диапазоне 2,39 в соответствии с формулой A = X ^ 2 * (1.8 / 100) и занести их в другой лист. Файл ниже  

Пожалуйста подскажите в чем моя ошибка?  :(
Код
Sub formula()
Dim d As Object, X As Long, A As Long
Set d = ActiveWorkbook.Sheets("Константы")
LastRow = d.Cells(d.Rows.Count, 1).End(xlUp).Row
For i = 1 To LastRow
X = d.Range(d.Cells(i, 2), d.Cells(i, 39))
A = X ^ 2 * (1.8 / 100)
A = ActiveWorkbook.Sheets("С формулой")
Next
End Sub
 
Код
X = d.Range(d.Cells(i, 2), d.Cells(i, 39))

Вот тут вы в переменную, объявленную как тип LONG суете VALUE диапазона со второго по 39 столбец. Не сумму значений ячеек, а просто диапазон.
Оно так надо?

З.Ы. если я правильно понял задачу - надо с листа Константы брать каждую ячейку, применять к ее значению формулу и уже эти данные выгружать на лист "с формулой". Так?
Если да, то надо циклом бегать не только по строкам, но и по столбцам, забирать значение конкретной ячейки, применять к ней вычисления и уж потом вставлять в соотв.ячейку другого листа. Это как один из вариантов решения.
Изменено: Пытливый - 12.08.2022 16:03:53
Кому решение нужно - тот пример и рисует.
 
Код
Sub tt()
    With Worksheets("Константы")
        c0_ = 1
        c1_ = 39
        nc_ = c1_ - c0_ + 1
        r0_ = 2
        r1_ = .Cells(.Rows.Count, 1).End(3).Row
        nr_ = r1_ - r0_ + 1
        ar = .Cells(r0_, c0_).Resize(nr_, nc_).Value
    End With
    For i = 1 To nr_
        For j = 2 To nc_
            ar(i, j) = ar(i, j) ^ 2 * (1.8 / 100)
        Next j
    Next i
    Worksheets("С формулой").Cells(r0_, c0_).Resize(nr_, nc_) = ar
End Sub
Скажи мне, кудесник, любимец ба’гов...
 
Cпасибо!!!! Можно вопрос пожалуйста?? Вы задали nr_ = r1_ - r0_ + 1  получается эта часть позволяет перескакивать на одну ячейку? То есть нужно в целом перескочить на разницу при этом движение ячейки начинается с i = 1 до r1_ - r0 и перескакивать на 1? Просто я лишь начинаю и во многих макросах видела , что задается первая и последняя  
 
Цитата
Анна Иванова написал:
получается эта часть позволяет перескакивать на одну ячейку?
это получается только у вас
у всех получается на r1_ - r0_ + 1 ячеек
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
Страницы: 1
Наверх