Страницы: 1
RSS
Как присвоить переменной диапазон значений для расчета при помощи формулы
 
Добрый день!

Уважаемые форумчане, буду очень благодарна за помощь! Взялась делать макрос, когда не очень в них разбираюсь...
Вопрос в следующем, написала код для расчета с помощью формулы в ячейке f3, но проблема в том, что мне нужно выполнить автоматический расчет во всем столбце f, а даннные должны браться из столбца с (ну, это для первой формулы), но у меня никак не получается прописать корректно код так, чтобы макрос заполнял значения во всем столбце. Подскажите, как нужно сделать?

Запись для одной ячейки у меня выглядит так:
Код
Sub Расчет()

Dim PSt As Currency
Dim SPI As Integer
Dim Data As Date
Worksheets("Данные").Activate
PSt = Range("c3").Value
SPI = Range("d3").Value
Data = Range("e3").Value
Range("f3").Formula = 1 / SPI * 100
    
End Sub
 
Здравствуйте.
Из столбца С в вашу формулу ничего не попадает.
По краней мере в примере.
А так - пробуйте


Код
Sub Расчет()

Range("f3:f7").Formula = "=1/d3*100"
'если нужно заменить формулы на значения, то добавить
Range("f3:f7").Value = Range("f3:f7").Value

End Sub
Изменено: Dima S - 09.12.2020 19:49:24
 
Прошу прощения, столбец d в первой офрмуле. Я просто хочу выразить переменную SPI  через него. Т.е для данной переменной обозначить, что она принимает значения из стобца d. И, если по формуле 1 разделить на переменную SPI, то это будет означать, что 1 делится на значение из столбца d.
 
Диапазон - объект листа и в переменную нужно передавать, как объект:
Код
     Set PSt = Range("c3").Value
     ............
     Set PSt = = Nothing
End Sub

Если Вы пишете Range("f3").Formula , то далее должна следовать текстовая запись формулы.
Если передать нужно не объект, а часть формулы, то текстовая переменная должна получить диапазон текстом:
Код
Dim sRng as  String

sRng = "Range(""c3"")"
Если переменная должна обозначать номер столбца в формуле, то текст формулы нужно разрывать и вставлять переменную:
Код
Range("f3:f7").Formula = "=1/RC[" & -2 & "]*100"
Где -2 - значение переменной для Вашего случая (смещение по строке на 2 столбца влево)
 
Цитата
Надежда написал:
обозначить, что она принимает значения из стобца d. И, если по формуле 1 разделить на переменную SPI, то это будет означать, что 1 делится на значение из столбца d
делится на значение - какое? Конкретное? Может по факту нужен цикл?
Код
Sub Расчет() 
Dim PSt As Currency
Dim SPI As Integer
Dim Data As Date
Worksheets("Данные").Activate
PSt = Range("c3").Value
Data = Range("e3").Value
Dim lr as long
for lr = 2 to 100'цикл от строки 2 до строки 100
SPI = Range("d" & lr).Value
Range("f" & lr).Value = 1 / SPI * 100
next
End Sub
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Страницы: 1
Наверх