Страницы: 1
RSS
Переменная для формулы., Как грамотно назначить переменную для поледней формулы
 
Всем привет. Я не специалист в область макросов, но нужна помощь в их правильной работе. Есть вот такой макрос

Код
Public Sub Raschot()
    
    Dim lr&: lr = ActiveCell.Row
    
    Application.ScreenUpdating = False
 
    Range("B14").Formula2 = "=--SUBSTITUTE(DATE(ROW(INDIRECT(YEAR(B" & lr & ")&"":""&YEAR(C" & lr & "))),1,1),SMALL(DATE(ROW(INDIRECT(YEAR(B" & lr & ")&"":""&YEAR(C" & lr & "))),1,1),1),B" & lr & ")"
        Range("B14:B22").Select
        Selection.NumberFormat = "m/d/yyyy"
        Selection.HorizontalAlignment = xlCenter
          
        Range("C14").Formula2 = "=--SUBSTITUTE(DATE(ROW(INDIRECT(YEAR(B" & lr & ")&"":""&YEAR(C" & lr & "))),12,31), LARGE(DATE(ROW(INDIRECT(YEAR(C" & lr & ")&"":""&YEAR(1))),12,31),1),C" & lr & ")"
        Range("C14:C22").Select
        Selection.NumberFormat = "m/d/yyyy"
        Selection.HorizontalAlignment = xlCenter
         
         Range("D14").Formula2 = "=--SUBSTITUTE(DATE(ROW(INDIRECT(YEAR(B" & lr & ")&"":""&YEAR(C" & lr & "))),12,31),LARGE(DATE(ROW(INDIRECT(YEAR(B" & lr & ")&"":""&YEAR(C" & lr & "))),12,31),1),C" & lr & ")-(--SUBSTITUTE(DATE(ROW(INDIRECT(YEAR(B" & lr & ")&"":""&YEAR(C" & lr & "))),1,1),SMALL(DATE(ROW(INDIRECT(YEAR(B" & lr & ")&"":""&YEAR(C" & lr & "))),1,1),1),B" & lr & "+1))+1"
        Range("D14:D22").Select
        Selection.NumberFormat = "#,##0"
        Selection.HorizontalAlignment = xlCenter
         
          
        Range("E14").Formula2 = "=IF(DAY(DATE(ROW(INDIRECT(YEAR(B" & lr & ")&"":""& YEAR(C" & lr & "))),2,29))=29,366,365)"
        Range("E14:E22").Select
        Selection.NumberFormat = "#,##0"
        Selection.HorizontalAlignment = xlCenter
          
       Range("F14").Formula2 = "=(--SUBSTITUTE(DATE(ROW(INDIRECT(YEAR(B" & lr & ")&"":""&YEAR(C" & lr & "))),12,31),LARGE(DATE(ROW(INDIRECT(YEAR(B" & lr & ")&"":""&YEAR(C" & lr & "))),12,31),1),C" & lr & ")-(--SUBSTITUTE(DATE(ROW(INDIRECT(YEAR(B" & lr & ")&"":""&YEAR(C" & lr & "))),1,1),SMALL(DATE(ROW(INDIRECT(YEAR(B" & lr & ")&"":""&YEAR(C" & lr & "))),1,1),1),B" & lr & "+1))+1)/IF(DAY(DATE(ROW(INDIRECT(YEAR(B" & lr & ")&"":""&YEAR(C" & lr & "))),2,29))=29,366,365)"
       Range("F14:F22").Select
       Selection.NumberFormat = "m/d/yyyy"
       Selection.HorizontalAlignment = xlCenter
       
       Range("G14").Formula2 = "=$E$3*$F$3%*(--SUBSTITUTE(DATE(ROW(INDIRECT(YEAR(B" & lr & ")&"":""&YEAR(C" & lr & "))),12,31),LARGE(DATE(ROW(INDIRECT(YEAR(B" & lr & ")&"":""&YEAR(C" & lr & "))),12,31),1),C" & lr & ")-(--SUBSTITUTE(DATE(ROW(INDIRECT(YEAR(B" & lr & ")&"":""&YEAR(C" & lr & "))),1,1),SMALL(DATE(ROW(INDIRECT(YEAR(B" & lr & ")&"":""&YEAR(C" & lr & "))),1,1),1),B" & lr & "+1))+1)/IF(DAY" & _
            "(DATE(ROW(INDIRECT(YEAR(B" & lr & ")&"":""&YEAR(C" & lr & "))),2,29))=29,366,365)"
       Range("G14:G22").Select
       Selection.NumberFormat = "#,##0.00"
       Selection.HorizontalAlignment = xlRight
       Application.ScreenUpdating = True
       Range("G14").Select
End Sub

В последней формуле, где  Range("G14", есть вот такое выражение $E$3*$F$3% , для правильной работы формулы ему надо назначить переменную.
Как тут грамотно поступить?
 
Цитата
Иван Иванов написал:
Как тут грамотно поступить?
Грамотно - это все расчеты производить в коде, а на лист выгружать готовый результат, а не многоэтажные формулы. Что касается вопроса Темы, то 'в лоб' как-то так
Код
Dim myVar As String
myVar = "$E$3*$F$3%"
Range("G14").Formula2 = "=" & myVar & "*(--SUBSTITUTE'...далее по тексту..."
Согласие есть продукт при полном непротивлении сторон
 
Что-то на верное я не правильно объяснил. Надо чтобы в  "$E$3*$F$3%" при выборе в таблице определенной строки 3 менялась на номер той строки, которую выбрали.
 
Цитата
Иван Иванов написал:
Что-то на верное я не правильно объяснил
Вообще ВСЕ не правильно объяснил  :)
Цитата
Иван Иванов написал:
менялась на номер той строки, которую выбрали
у Вас уже есть такая переменная. Это
Код
Dim lr&: lr = ActiveCell.Row

и в коде есть пример ее использования в формуле
Код
Range("G14").Formula2 = "=$E$" & lr & "*$F$" & lr & "%*(--SUBSTITUTE......"
Согласие есть продукт при полном непротивлении сторон
 
Большое спасибо за ответ. Догадывался, что как-то так, пробовал по разному эту переменную вставлять в этом куске формулы, но незнание этого языка к успеху не привело. Ещё раз спасибо.
Страницы: 1
Наверх