Страницы: 1
RSS
Последовательная подстановка значения, вычисление и вывод результатов на лист
 
Добрый день, возникла проблема в написании макроса последовательной подстановки чисел в ячейку с выводом результатов на лист. Буду признателен за помощь
Изменено: vikttur - 08.06.2021 18:35:25
 
Как программа поймет, какие значения нужно подставлять?
 
Код
Sub Sequence()
    Const iMin = 0
    Const iMax = 5

    Dim sh As Worksheet
    Set sh = ActiveSheet
    Dim arr As Variant
    arr = sh.Range("C2:H2")
    ReDim brr(iMin To iMax, 1 To UBound(arr, 2))
    
    Dim y As Long
    Dim x As Integer
    For y = iMin To iMax
        For x = 1 To UBound(arr, 2)
            brr(y, x) = arr(1, x) + y
        Next
    Next
    
    sh.Range("C5").Resize(iMax - iMin + 1, UBound(brr, 2)) = brr
End Sub
 
МатросНаЗебре, Вангуешь? или понял задание?
 
Вангую. В задании есть ожидаемый результат. Выдал одно из решений, которое приведёт к такому результату.
 
МатросНаЗебре, спасибо за ответ, но немного не так. В вашем ответе вы указали формулу расчета в макросе, это не то. В ячейку с1 подставляется последовательно от 0 до 2 с шагом 0,1. Ответ с с3:н3 вставляется в таблицу результатов чисел (без формул в макросе), и так для каждого последовательного подставленного числа

То есть как я делаю ставлю 0 копирую ответ строкой, вставляю ниже числами, потом 0,1 копирую ответ вставляю ниже - вот эта проблема
Изменено: vikttur - 08.06.2021 17:30:16
 
Не сванговал )
Код
Sub Sequence()
    Dim sh As Worksheet
    Set sh = ActiveSheet
    Dim arr As Variant
     
    Dim y As Long
    Dim d As Double
    For d = 0 To 2 Step 0.2
        sh.Range("C1").Value = d
        sh.UsedRange.Calculate
        arr = sh.Range("C3:H3")
        y = y + 1
        sh.Range("C5").Cells(y, 1).Resize(UBound(arr, 2), UBound(arr, 2)) = arr
    Next
End Sub
 
Прекрасно работает, только после последней подстановки дублируются результаты
 
Код
=ПОСЛЕД($C$1*10+1;1;C2;1/10)
 
Поправил.
Код
Sub Sequence()
    Dim sh As Worksheet
    Set sh = ActiveSheet
    Dim arr As Variant
      
    Dim y As Long
    Dim d As Double
    For d = 0 To 2 Step 0.1
        sh.Range("C1").Value = d
        sh.UsedRange.Calculate
        arr = sh.Range("C3:H3")
        y = y + 1
        sh.Range("C5").Cells(y, 1).Resize(UBound(arr, 1), UBound(arr, 2)) = arr
    Next
End Sub
Страницы: 1
Наверх