'Определяем массив С для исходных данных и массива g 'для резулютирующей квадратной матрицы Dim c(), g(), k As Long, i As Long, j As Long
Cells(7, 1).CurrentRegion.Offset(1).ClearContents
'Вводим в массив С значений из ячеек A2:D2 k = 1 Do While Cells(2, k) <> "" ReDim Preserve c(1 To k) 'увеличивает размерность массива с пока элемент не пустой c(k) = Cells(2, k) k = k + 1 Loop
'Выделяем память для массива g ReDim g(1 To k - 1, 1 To k - 1)
'Проводим расчет элементов матрицы по заданной формуле 'организуя двойной цикл (по строкам и столбцам) For i = 1 To k - 1 For j = 1 To k - 1 If i <= j Then g(i, j) = Sin(c(i)) ^ 2 Else g(i, j) = c(i - j) + Cos(c(i)) End If 'Ввод элементов полученной матрицы g в ячейки A7:D10 листа Excel Cells(i + 6, j) = g(i, j) Next j Next i End Sub
[/vba]
Макрос для кнопки Старт [vba]
Код
Private Sub CommandButton1_Click()
'Определяем массив С для исходных данных и массива g 'для резулютирующей квадратной матрицы Dim c(), g(), k As Long, i As Long, j As Long
Cells(7, 1).CurrentRegion.Offset(1).ClearContents
'Вводим в массив С значений из ячеек A2:D2 k = 1 Do While Cells(2, k) <> "" ReDim Preserve c(1 To k) 'увеличивает размерность массива с пока элемент не пустой c(k) = Cells(2, k) k = k + 1 Loop
'Выделяем память для массива g ReDim g(1 To k - 1, 1 To k - 1)
'Проводим расчет элементов матрицы по заданной формуле 'организуя двойной цикл (по строкам и столбцам) For i = 1 To k - 1 For j = 1 To k - 1 If i <= j Then g(i, j) = Sin(c(i)) ^ 2 Else g(i, j) = c(i - j) + Cos(c(i)) End If 'Ввод элементов полученной матрицы g в ячейки A7:D10 листа Excel Cells(i + 6, j) = g(i, j) Next j Next i End Sub