Решение задач в Excel на VBA. Применение программных средств в проектировании автомобильных конструкций. Калядин В.И. - 13 стр.

UptoLike

Составители: 

13
торый будет решать СЛАУ с верхней треугольной матрицей (его будем
вызывать по нажатию клавиш Ctrl+Shift+x или щелчку по x-кружку).
Макрос, используемый на этапах a и b алгоритма:
Sub E( ) ' Запускается по Ctrl+Shift+E и создаѐт единичную матрицу E
Dim TR As Range ' в выделенной прямоугольной области.
Dim n As Integer
For Each TR In Selection.Areas ' Цикл по выделенным областям.
n = Sqr(TR.Count) ' Определение числа выделенных ячеек.
i1 = TR.Row: j1 = TR.Column ' Номера начальных строки и столбца.
TR = 0 ' Обнуление диапазона и запись
For i = 1 To N: Cells(i1 + i - 1, j1 + i - 1) = 1: Next i ' на главную диагональ.
Next ' Конец цикла по выделенным областям
End Sub
Макрос, используемый на этапе b алгоритма:
Sub Lk() ' запускается по Ctrl+Shift+L и нормирует главный столбец
Dim TR As Range: Dim n As Integer
For Each TR In Selection.Areas ' Цикл по выделенным областям.
n = TR.Count: i1 = TR.Row: j1 = TR.Column ' опр. числа эл-тов и индексов
For i = i1 + 1 To i1 + n - 1
Cells(i, j1) = - Cells(i, j1) / Cells(i1, j1)
Next i
Cells(i1, j1) = 1
Next
End Sub
Макрос для этапа d алгоритма:
Sub TrSolve( ) ' запускается по Ctrl+Shift+x и решает СЛАУ
Dim n As Integer ' с верхней треугольной матрицей
Dim TR As Range ' в выделенной прямоугольной области.
For Each TR In Selection.Areas ' Цикл по выделенным областям.
in = TR.Row: jn = TR.Column ' строка и столбец начала матрицы
n = TR.Rows.Count ' число строк матрицы
If n + 1 <> TR.Columns.Count Then
торый будет решать СЛАУ с верхней треугольной матрицей (его будем
вызывать по нажатию клавиш Ctrl+Shift+x или щелчку по x-кружку).
             Макрос, используемый на этапах a и b алгоритма:
Sub E( )    ' Запускается по Ctrl+Shift+E и создаѐт единичную матрицу E
Dim TR As Range                         ' в выделенной прямоугольной области.
Dim n As Integer
  For Each TR In Selection.Areas               ' Цикл по выделенным областям.
    n = Sqr(TR.Count)                              ' Определение числа выделенных ячеек.
    i1 = TR.Row: j1 = TR.Column                    ' Номера начальных строки и столбца.
   TR = 0                                               ' Обнуление диапазона и запись
    For i = 1 To N: Cells(i1 + i - 1, j1 + i - 1) = 1: Next i ' на главную диагональ.
  Next                                      ' Конец цикла по выделенным областям
End Sub
                 Макрос, используемый на этапе b алгоритма:
Sub Lk()         ' запускается по Ctrl+Shift+L и нормирует главный столбец
Dim TR As Range: Dim n As Integer
For Each TR In Selection.Areas                         ' Цикл по выделенным областям.
  n = TR.Count: i1 = TR.Row: j1 = TR.Column               ' опр. числа эл-тов и индексов
  For i = i1 + 1 To i1 + n - 1
   Cells(i, j1) = - Cells(i, j1) / Cells(i1, j1)
  Next i
 Cells(i1, j1) = 1
Next
End Sub
                           Макрос для этапа d алгоритма:
Sub TrSolve( )          ' запускается по Ctrl+Shift+x и решает СЛАУ
Dim n As Integer                               ' с верхней треугольной матрицей
Dim TR As Range                            ' в выделенной прямоугольной области.
For Each TR In Selection.Areas                      ' Цикл по выделенным областям.
 in = TR.Row: jn = TR.Column                       ' строка и столбец начала матрицы
 n = TR.Rows.Count                                 ' число строк матрицы
 If n + 1 <> TR.Columns.Count Then
                                               13