Макрос для матрицы в excel

Sub SumMatrix()
    On Error GoTo M
    Const iSelCol As Long = 3 'столбец, по которому ищется максимум и минимум
    Const M As Long = 5  'количество строк
    Const N As Long = 5  'количество столбцов
    Dim i As Long, j As Long
    Dim iMax As Long, iMin As Long
    Dim iSum As Single
    Dim s As String
    Dim x(M, N) As Long
    For i = 1 To M
        For j = 1 To N
            x(i, j) = 40 * Rnd
        Next j
    Next i
    iMax = x(1, iSelCol)
    iMin = iMax
    For i = 1 To N
        iMax = IIf(iMax < x(i, iSelCol), x(i, iSelCol), iMax)
        iMin = IIf(iMin > x(i, iSelCol), x(i, iSelCol), iMin)
    Next i
    For i = 2 To M
        For j = 1 To i - 1
            iSum = iSum + x(i, j)
        Next j
    Next i
    MsgBox "iMin = " & iMin & vbCrLf & _
    "iMax = " & iMax & vbCrLf & _
    "iSum = " & iSum & vbCrLf & _
    "iSum/iMin = " & iSum / iMin & vbCrLf & _
    "iSum/iMax = " & iSum / iMax
    Exit Sub
M:
    s = "Невозможно выполнить деление."
    Select Case Err.Number
    Case 11
        If Not iMax Then
            MsgBox (s & " Максимальный элемент равен 0.")
        Else
            MsgBox (s & " Минимальный элемент равен 0.")
        End If
    Case Else
        MsgBox "Извините, произошла непредвиденная ошибка."
    End Select
End Sub

2 / 2 / 2

Регистрация: 10.10.2016

Сообщений: 142

1

26.02.2017, 16:01. Показов 6384. Ответов 13


Студворк — интернет-сервис помощи студентам

Найти сумму всех элементов матрицы 5×5, расположенных под главной диагональю, и разделить ее на произведение максимального и минимального элемента 3 колонки.
Очень рассчитываю на вашу помощь! Заранее благодарю!



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

26.02.2017, 16:01

Ответы с готовыми решениями:

Макрос для переноса данных из одного Excel в другой Excel файл
Уважаемые эксперты, очень нужна ваша помощь! Подскажите, пожалуйста, как прописать макрос, который…

Макрос для экспорта из excel файла в excel файл шаблон
здравствуйте.
подскажите как написать макрос.
есть 1 файл со столбиками : город , дом, квартира,…

Макрос для загрузки картинок — работал в Excel 2013, но не работает в Excel 2016
Добрый день!

Имеется макрос который работал в Excel 2013, но не работает в Excel 2016.

Макрос для печати в Microsoft word 2010
Помогите с написанием макроса для Microsoft word 2010.
Есть документ, который имеет следующую…

13

5561 / 1367 / 150

Регистрация: 08.02.2009

Сообщений: 4,107

Записей в блоге: 30

26.02.2017, 16:47

2

Спасибо. Но лучше потом.

Как тут нередко случается, пока вам поможет репрессированный* — Shersh:

Цитата
Сообщение от Shersh
Посмотреть сообщение

Не по теме:

А на зачОт сходить за вас не надо?

(это ссылка на подсчёт суммы под диагональю матрицы в Эксселе).

В той же теме и Казанский выложил неслабый вариант.

Вот и proft довольно профессионально выступил (только в ВБА вместо

PrintDebug.Print или MsgBox): Вычислить сумму и число элементов мат-рицы, находящихся под главной диагона-лью и на ней

Также внизу этой темы робот подобрал похожие — прокурутите вниз и ознакомьтесь.

Не по теме:

________
* модератор прицельно бьёт — самых талантливых (?)



2



SoftIce

26.02.2017, 16:49

Не по теме:

Цитата
Сообщение от Sasha_Smirnov
Посмотреть сообщение

модератор прицельно бьёт — самых талантливых

Обидно? :D



0



5561 / 1367 / 150

Регистрация: 08.02.2009

Сообщений: 4,107

Записей в блоге: 30

26.02.2017, 16:59

4

Также и igor myakota творил на эту тему (частично) под чутким присмотром Alex77755:

Цитата
Сообщение от Alex77755
Посмотреть сообщение

…в вопросе нет упоминаний об индексах и не важно где они находятся



0



2 / 2 / 2

Регистрация: 10.10.2016

Сообщений: 142

26.02.2017, 22:07

 [ТС]

5

Sasha_Smirnov, Не хочу показаться наглым, но мы не учили и не будем учить VBA, поэтому я даже не знаю как переделать предложенное вами решение под свою задачу



0



11482 / 3773 / 677

Регистрация: 13.02.2009

Сообщений: 11,145

26.02.2017, 22:38

6

но мы не учили и не будем учить VBA

И это правильное решение!
Продолжение напрашивается само:
Но мы не работали и не будем работать!
Не царское это дело! Прикажу и …



0



2 / 2 / 2

Регистрация: 10.10.2016

Сообщений: 142

26.02.2017, 22:49

 [ТС]

7

Alex77755, Зачем же ты так? Я в этом не разбираюсь, поэтому и попросил помощи. Я пробовал сам разобраться, но слишком короткий промежуток времени отведен на эту задачу.



0



5561 / 1367 / 150

Регистрация: 08.02.2009

Сообщений: 4,107

Записей в блоге: 30

28.02.2017, 04:42

8

Apollo1222, а тут вообще не лаптем щи хлебают — работа адовая!

Цитата
Сообщение от Sasha_Smirnov
Посмотреть сообщение

…тремя часами мозгового штурма мы не отделались (это что! в 1990-м, на БЭСМ,

по 2 семестра

уходило!)



1



Apollo1222

2 / 2 / 2

Регистрация: 10.10.2016

Сообщений: 142

28.02.2017, 10:20

 [ТС]

9

Alex77755, а перевести с С++ на VBA ты считаешь помощью?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
int main()
{
    setlocale(LC_ALL, "Ukrainian");
    int a[5][5];
        
    int sum = 0;
 
    for (int i = 0; i < 5; i++)
        for (int j = 0; j < 5; j++)
            if (i < j)
            {
                sum += a[i][j];
            }
    
        int max = a[0][3];
        for (int i = 0; i < 5; ++i)
            if (a[i][3]>max)
                max = a[i][3];
        cout << "Макс значение в " << 3 << " столбце = " << max << endl;
 
        int  min = a[0][3];
        for (int i = 0; i < 5; ++i)
            if (a[i][3]< min)
                min = a[i][3];
        cout << "Мин значение в " << 3 << " столбце = " << min << endl;
 
        double result = sum / (min*max);
        cout << "Результат = " << result;
 
    system("pause");
}



0



Homarty

141 / 119 / 29

Регистрация: 12.02.2017

Сообщений: 308

28.02.2017, 12:06

10

Лучший ответ Сообщение было отмечено Apollo1222 как решение

Решение

Держите,

Добавлено через 1 минуту

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Sub SumMatrix()
    On Error GoTo M
    Const iSelCol As Long = 3 'столбец, по которому ищется максимум и минимум
    Const M As Long = 5  'количество строк
    Const N As Long = 5  'количество столбцов
    Dim i As Long, j As Long
    Dim iMax As Long, iMin As Long
    Dim iSum As Single
    Dim s As String
    Dim x(M, N) As Long
    For i = 1 To M
        For j = 1 To N
            x(i, j) = 40 * Rnd
        Next j
    Next i
    iMax = x(1, iSelCol)
    iMin = iMax
    For i = 1 To N
        iMax = IIf(iMax < x(i, iSelCol), x(i, iSelCol), iMax)
        iMin = IIf(iMin > x(i, iSelCol), x(i, iSelCol), iMin)
    Next i
    For i = 2 To M
        For j = 1 To i - 1
            iSum = iSum + x(i, j)
        Next j
    Next i
    MsgBox "iMin = " & iMin & vbCrLf & _
    "iMax = " & iMax & vbCrLf & _
    "iSum = " & iSum & vbCrLf & _
    "iSum/iMin = " & iSum / iMin & vbCrLf & _
    "iSum/iMax = " & iSum / iMax
    Exit Sub
M:
    s = "Невозможно выполнить деление."
    Select Case Err.Number
    Case 11
        If Not iMax Then
            MsgBox (s & " Максимальный элемент равен 0.")
        Else
            MsgBox (s & " Минимальный элемент равен 0.")
        End If
    Case Else
        MsgBox "Извините, произошла непредвиденная ошибка."
    End Select
End Sub

Добавлено через 57 минут
Если Вам безразличен VBA, то вот аналог на C++

Добавлено через 7 минут

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include<iostream>
#include<ctime>
#include <cstdlib>
using namespace std;
 
int main(int argc, char* argv[]) {
 setlocale(LC_ALL, "rus");
 const int iSelCol = 3; //Столбец, по которому производится поиск максимума и минимума
 const int M = 5; //количество строк
 const int N = 5; //количество столбцов
 int iMax, iMin;
 float iSum=0;
 char* s;
 srand(time(NULL));
 int x[M][N];
 for (int i = 0; i < M; i  ){
  for (int j = 0; j < N; j  ){
   x[i][j] = rand() % 40;
   cout << "x[" << i << "][" << j << "] = " << x[i][j] << "t";
  }
  cout << endl;
 }
 iMax = x[1][iSelCol-1];
 iMin = iMax;
 for (int i = 0; i < N; i  ){
  iMax = iMax < x[i][iSelCol-1] ? x[i][iSelCol-1] : iMax;
  iMin = iMin>x[i][iSelCol-1] ? x[i][iSelCol-1] : iMin;
 }
 for (int i = 1; i < M; i  ){
  for (int j = 0; j < i; j  )
   iSum  = x[i][j];
 }
 if (iMin == 0){
  cout << "Невозможновыполнить деление. Минимальный элемент рвен 0.n";
  return 0;
 }
 if (iMax == 0){
  cout << "Невозможновыполнить деление. Максимальный элемент рвен 0.n";
  return 0;
 }
 cout << "iMin = " << iMin << endl
  << "iMax = " << iMax << endl
  << "iSum = " << iSum << endl
  << "iSum/iMin = " << iSum / iMin<<endl
  << "iSum/iMax = " << iSum / iMax << endl;
 system("pause");
 return 0;
}

Добавлено через 2 минуты
Здесь форум программистов VBA & VB может Вы, по случайности, попали не туда?



1



2 / 2 / 2

Регистрация: 10.10.2016

Сообщений: 142

28.02.2017, 14:18

 [ТС]

11

Homarty, большое спасибо, очень выручили!



0



141 / 119 / 29

Регистрация: 12.02.2017

Сообщений: 308

28.02.2017, 16:30

12

Обнаружил ошибку в коде: строка 26 For i = 1 To N заменить на For i = 1 To M (в коде C аналогично) и не забудьте про Option base 1. Ошибка проявится в том случае, когда M не равно N.



2



2 / 2 / 2

Регистрация: 10.10.2016

Сообщений: 142

05.03.2017, 19:42

 [ТС]

13

Homarty, а как сделать чтобы оно эту матрицу 5х5 не рандомно заполняло, а считывало из таблицы Эксель?



0



Homarty

141 / 119 / 29

Регистрация: 12.02.2017

Сообщений: 308

06.03.2017, 07:44

14

Лучший ответ Сообщение было отмечено Sasha_Smirnov как решение

Решение

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Sub SumMatrix2()
    On Error GoTo ToError
    Const iSelCol As Long = 3
    Const M As Long = 5
    Const N As Long = 5
    Dim i As Long, j As Long
    Dim iMax As Long, iMin As Long
    Dim iSum As Single
    Dim s As String
    Dim x() As Variant
    If M <> N Then Error 10
    ActiveSheet.Range(Cells(1, 1), Cells(M, N)).Select
    x() = ActiveSheet.Range(Cells(1, 1), Cells(M, N)).Value
    iMax = x(1, iSelCol)
    iMin = iMax
    For i = 1 To M
        iMax = IIf(iMax < x(i, iSelCol), x(i, iSelCol), iMax)
        iMin = IIf(iMin > x(i, iSelCol), x(i, iSelCol), iMin)
    Next i
    For i = 2 To M
        For j = 1 To i - 1
            iSum = iSum + x(i, j)
        Next j
    Next i
    MsgBox "iMin = " & iMin & vbCrLf & _
    "iMax = " & iMax & vbCrLf & _
    "iSum = " & iSum & vbCrLf & _
    "iSum/iMin = " & iSum / iMin & vbCrLf & _
    "iSum/iMax = " & iSum / iMax
    Exit Sub
ToError:
    s = "Невозможно выполнить деление."
    Select Case Err.Number
    Case 11, 6
        If Not iMax Then
            MsgBox (s & " Максимальный элемент равен 0.")
        Else
            MsgBox (s & " Минимальный элемент равен 0.")
        End If
    Case 10
        MsgBox "Количество строк не равно количеству столбцов."
    Case Else
        MsgBox "Извините, произошла непредвиденная ошибка."
    End Select
End Sub



2



In this Article

  • Creating a Matrix in VBA
  • Convert Single Row Vector into a Matrix
  • Convert a Matrix into a Single Row Vector
  • Using the WorksheetFunction.MMULT to create a Matrix Array

This tutorial will show you how to  create a matrix using an Array in VBA.

A matrix is a rectangular array of numbers with the same amount of Rows and Columns. You can create a matrix in VBA by populating Array variables and using VBA Loops.

Creating a Matrix in VBA

Sub CreateSimpleMatrix()
   Dim matrix() As Integer
   Dim x, i, j, k As Integer
're-dim the size of the array
   ReDim matrix(1 To 3, 1 To 3) As Integer
   x = 1
   For i = 1 To 3
      For j = 1 To 3
         matrix(i, j) = x
         x = (x + 1)
      Next j
   Next i
' return result to sheet in one go
   Range("A1:C3") = matrix
End Sub

Running the procedure above will return a simple matrix to Range(“A1:C3”) to your worksheet.

vba matrix simple

Convert Single Row Vector into a Matrix

Consider the column of numbers below. You may at some stage wish to convert a column of numbers to a matrix.

vba matrix convert

Using the function below, we can create a matrix from the list of numbers.

Function Create_Matrix(Vector_Range As Range, No_Of_Cols_in_output As Integer, No_of_Rows_in_output As Integer) As Variant
   ReDim Temp_Array(1 To No_Of_Cols_in_output, 1 To No_of_Rows_in_output)
   Dim No_Of_Elements_In_Vector As Integer
   Dim Col_Count As Integer, Row_Count As Integer

   No_Of_Elements_In_Vector = Vector_Range.Rows.Count

'Eliminate NULL Conditions
   If Vector_Range Is Nothing Then Exit Function
   If No_Of_Cols_in_output = 0 Then Exit Function
   If No_of_Rows_in_output = 0 Then Exit Function
   If No_Of_Elements_In_Vector = 0 Then Exit Function

   For Col_Count = 1 To No_Of_Cols_in_output
      For Row_Count = 1 To No_of_Rows_in_output
         Temp_Array(Col_Count, Row_Count) = Vector_Range.Cells(((No_of_Rows_in_output) * (Col_Count - 1) + Row_Count), 1)
      Next Row_Count
   Next Col_Count
   Create_Matrix = Temp_Array

End Function

We can create the matrix in our Excel sheet, by calling the function above.

Sub ConvertToMatrix()
   Range("C1:H2") = Create_Matrix(Range("A1:A10"), 2, 6)
End Sub

vba vector to matrix

Convert a Matrix into a Single Row Vector

Alternatively, you may want to convert a Matrix into a Single row. Consider the Matrix below.

vba-matrix-2dim

Using the function below, we can convert this into a single dimension array.

Function Create_Vector(Matrix_Range As Range) As Variant
   Dim No_of_Cols As Integer, No_Of_Rows As Integer
   Dim i As Integer
   Dim j As Integer
'pick up the rows and columns from the matrix
   No_of_Cols = Matrix_Range.Columns.Count
   No_Of_Rows = Matrix_Range.Rows.Count
   ReDim Temp_Array(No_of_Cols * No_Of_Rows)
'Eliminate NULL Conditions
   If Matrix_Range Is Nothing Then Exit Function
   If No_of_Cols = 0 Then Exit Function
   If No_Of_Rows = 0 Then Exit Function
'loop through the array - the first element
   For j = 1 To No_Of_Rows
'now loop through the second element
      For i = 0 To No_of_Cols - 1
'assign to a single dimension temporary array
         Temp_Array((i * No_Of_Rows) + j) = Matrix_Range.Cells(j, i + 1)
      Next i
   Next j
   Create_Vector = Temp_Array
End Function

We can now call this function using the procedure below.

Sub GenerateVector()
   Dim Vector() As Variant
   Dim k As Integer
   Dim No_of_Elements
'get the array
   Vector = Create_Vector(Sheets("Sheet1").Range("A1:D5"))
'loop through the array and populate the sheet
   For k = 0 To UBound(Vector) - 1
      Sheets("Sheet1").Range("G1").Offset(k, 0).Value = Vector(k + 1)
   Next k
End Sub

This procedure will return the following result.

vba matrix to vector

Using the WorksheetFunction.MMULT to create a Matrix Array

Consider the following spreadsheet.

vba-matrix-empty-interest

We can use the procedure below to calculate the interest amount for the grid above based on the interest rate and the amount the person wants to borrow.

Sub UseMMULT()
   Dim rngIntRate As Range
   Dim rngAmtLoan As Range
   Dim Result() As Variant
'populate our range objects
   Set rngIntRate = Range("B4:B9")
   Set rngAmtLoan = Range("C3:H3")
'use the MMULT formula to fill the result array
   Result = WorksheetFunction.MMult(rngIntRate, rngAmtLoan)
'populate the sheet
   Range("C4:H9") = Result
End Sub

vba matrix filled

You will notice in the sheet above, that procedure above populates the cells with values rather than formulas – see C4 in the above graphic – it has the value 200 in it, not a formula.  Using the WorksheetFunction method always returns a static value to the worksheet and not a formula.  This means that should the interest rate or loan amount change, the corresponding values in the filled in matrix WILL NOT change.

Instead of using the WorksheetFunction.MMULT, you can use VBA to apply the MMULT Function to a cell using the FormulaArray method.

Sub InsertMMULT()
   Range("C4:H9").FormulaArray = "=MMULT(B4:B9,C3:H3)"
End Sub

Notice that now when the spreadsheet is populated, a formula is used in the cells.

vba matrix formula array

VBA Coding Made Easy

Stop searching for VBA code online. Learn more about AutoMacro — A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!
vba save as

Learn More!

В программе Excel с матрицей можно работать как с диапазоном. То есть совокупностью смежных ячеек, занимающих прямоугольную область.

Адрес матрицы – левая верхняя и правая нижняя ячейка диапазона, указанные черед двоеточие.

Формулы массива

Построение матрицы средствами Excel в большинстве случаев требует использование формулы массива. Основное их отличие – результатом становится не одно значение, а массив данных (диапазон чисел).

Порядок применения формулы массива:

  1. Выделить диапазон, где должен появиться результат действия формулы.
  2. Ввести формулу (как и положено, со знака «=»).
  3. Нажать сочетание кнопок Ctrl + Shift + Ввод.

В строке формул отобразится формула массива в фигурных скобках.

Чтобы изменить или удалить формулу массива, нужно выделить весь диапазон и выполнить соответствующие действия. Для введения изменений применяется та же комбинация (Ctrl + Shift + Enter). Часть массива изменить невозможно.



Решение матриц в Excel

С матрицами в Excel выполняются такие операции, как: транспонирование, сложение, умножение на число / матрицу; нахождение обратной матрицы и ее определителя.

Транспонирование

Транспонировать матрицу – поменять строки и столбцы местами.

Сначала отметим пустой диапазон, куда будем транспонировать матрицу. В исходной матрице 4 строки – в диапазоне для транспонирования должно быть 4 столбца. 5 колонок – это пять строк в пустой области.

Матрича чисел.

  • 1 способ. Выделить исходную матрицу. Нажать «копировать». Выделить пустой диапазон. «Развернуть» клавишу «Вставить». Открыть меню «Специальной вставки». Отметить операцию «Транспонировать». Закрыть диалоговое окно нажатием кнопки ОК.
  • Транспонирование.

  • 2 способ. Выделить ячейку в левом верхнем углу пустого диапазона. Вызвать «Мастер функций». Функция ТРАНСП. Аргумент – диапазон с исходной матрицей.

ТРАНСП.

Нажимаем ОК. Пока функция выдает ошибку. Выделяем весь диапазон, куда нужно транспонировать матрицу. Нажимаем кнопку F2 (переходим в режим редактирования формулы). Нажимаем сочетание клавиш Ctrl + Shift + Enter.

Преимущество второго способа: при внесении изменений в исходную матрицу автоматически меняется транспонированная матрица.

Сложение

Складывать можно матрицы с одинаковым количеством элементов. Число строк и столбцов первого диапазона должно равняться числу строк и столбцов второго диапазона.

Сложение.

В первой ячейке результирующей матрицы нужно ввести формулу вида: = первый элемент первой матрицы + первый элемент второй: (=B2+H2). Нажать Enter и растянуть формулу на весь диапазон.

Пример.

Умножение матриц в Excel

Условие задачи:

Умножение.

Чтобы умножить матрицу на число, нужно каждый ее элемент умножить на это число. Формула в Excel: =A1*$E$3 (ссылка на ячейку с числом должна быть абсолютной).

Пример1.

Умножим матрицу на матрицу разных диапазонов. Найти произведение матриц можно только в том случае, если число столбцов первой матрицы равняется числу строк второй.

Разные диапазоны.

В результирующей матрице количество строк равняется числу строк первой матрицы, а количество колонок – числу столбцов второй.

Для удобства выделяем диапазон, куда будут помещены результаты умножения. Делаем активной первую ячейку результирующего поля. Вводим формулу: =МУМНОЖ(A9:C13;E9:H11). Вводим как формулу массива.

Пример2.

Обратная матрица в Excel

Ее имеет смысл находить, если мы имеем дело с квадратной матрицей (количество строк и столбцов одинаковое).

Размерность обратной матрицы соответствует размеру исходной. Функция Excel – МОБР.

Выделяем первую ячейку пока пустого диапазона для обратной матрицы. Вводим формулу «=МОБР(A1:D4)» как функцию массива. Единственный аргумент – диапазон с исходной матрицей. Мы получили обратную матрицу в Excel:

МОБР.

Нахождение определителя матрицы

Это одно единственное число, которое находится для квадратной матрицы. Используемая функция – МОПРЕД.

Ставим курсор в любой ячейке открытого листа. Вводим формулу: =МОПРЕД(A1:D4).

МОПРЕД.

Таким образом, мы произвели действия с матрицами с помощью встроенных возможностей Excel.

Умножение и деление матрицы на число в Excel

Способ 1

Рассмотрим матрицу А размерностью 3х4. Умножим эту матрицу на число k. При умножении матрицы на число получается матрица такой же размерности, что и исходная, при этом каждый элемент матрицы А умножается на число k.

Введем элементы матрицы в диапазон В3:Е5, а число k — в ячейку Н4. В диапазоне К3:N5 вычислим матрицу В, полученную при умножении матрицы А на число k: В=А*k. Для этого введем формулу =B3*$H$4 в ячейку K3, где В3 — элемент а11 матрицы А.

Примечание: адрес ячейки H4 вводим как абсолютную ссылку, чтобы при копировании формулы ссылка не менялась.

С помощью маркера автозаполнения копируем формулу ячейки К3 вниз и вправо на весь диапазон матрицы В.

Таким образом, мы умножили матрицу А в Excel и получим матрицу В.

Для деления матрицы А на число k в ячейку K3 введем формулу =B3/$H$4 и скопируем её на весь диапазон матрицы В.

Способ 2

Этот способ отличается тем, что результат умножения/деления матрицы на число сам является массивом. В этом случае нельзя удалить элемент массива.

Для деления матрицы на число этим способом выделяем диапазон, в котором будет вычислен результат, вводим знак «=», выделяем диапазон, содержащий исходную матрицу А, нажимаем на клавиатуре знак умножить (*) и выделяем ячейку с числом k. После ввода формулы нажимаем сочетание клавиш Ctrl+Shift+Enter, чтобы значениями заполнился весь диапазон.

 Умножение матрицы на число в Excel

Для выполнения деления в данном примере в диапазон вводим формулу =B3:E5/H4, т.е. знак «*» меняем на «/».

Умножение матрицы на число в Excel

Сложение и вычитание матриц в Excel

Способ 1

Следует отметить, что складывать и вычитать можно матрицы одинаковой размерности (одинаковое количество строк и столбцов у каждой из матриц). Причем каждый элемент результирующей матрицы С будет равен сумме соответствующих элементов матриц А и В, т.е. сij = аij + bij.

Рассмотрим матрицы А и В размерностью 3х4. Вычислим сумму этих матриц. Для этого в ячейку N3 введем формулу =B3+H3, где B3 и H3 – первые элементы матриц А и В соответственно. При этом формула содержит относительные ссылки (В3 и H3), чтобы при копировании формулы на весь диапазон матрицы С они могли измениться.

С помощью маркера автозаполнения скопируем формулу из ячейки N3 вниз и вправо на весь диапазон матрицы С.

Для вычитания матрицы В из матрицы А (С=А — В) в ячейку N3 введем формулу =B3 — H3 и скопируем её на весь диапазон матрицы С.

Способ 2

Этот способ отличается тем, что результат сложения/вычитания матриц сам является массивом. В этом случае нельзя удалить элемент массива.

Для деления матрицы на число этим способом выделяем диапазон, в котором будет вычислен результат, вводим знак «=», выделяем диапазон, содержащий первую матрицу А, нажимаем на клавиатуре знак сложения (+) и выделяем вторую матрицу В. После ввода формулы нажимаем сочетание клавиш Ctrl+Shift+Enter, чтобы значениями заполнился весь диапазон.

Умножение матриц в Excel

Следует отметить, что умножать матрицы можно только в том случае, если количество столбцов первой матрицы А равно количеству строк второй матрицы В.

Рассмотрим матрицы А размерностью 3х4 и В размерностью 4х2. При умножении этих матриц получится матрица С размерностью 3х2.

Вычислим произведение этих матриц С=А*В с помощью встроенной функции =МУМНОЖ(). Для этого выделим диапазон L3:M5 — в нём будут располагаться элементы матрицы С, полученной в результате умножения. На вкладке Формулы выберем Вставить функцию.

В диалоговом окне Вставка функции выберем Категория Математические — функция МУМНОЖОК.

В диалоговом окне Аргументы функции выберем диапазоны, содержащие матрицы А и В. Для этого напротив массива1 щёлкнем по красной стрелке.

Выделим диапазон, содержащий элементы матрицы А (имя диапазона появится в строке аргументов), и щелкнем по красной стрелке.

Для массива2 выполним те же действия. Щёлкнем по стрелке напротив массива2.

Выделим диапазон, содержащий элементы матрицы В, и щелкнем по красной стрелке.

В диалоговом окне рядом со строками ввода диапазонов матриц появятся элементы матриц, а внизу — элементы матрицы С. После ввода значений нажимаем на клавиатуре сочетание клавиш Shift+Ctrl и щелкаем левой кнопкой мыши по кнопке ОК.

ВАЖНО. Если просто нажать ОК, то программа вычислит значение только первой ячейки диапазона матрицы С.

Мы получим результат умножения матриц А и В.

Мы можем изменить значения ячеек матриц А и В, значения матрицы С поменяются автоматически.

Транспонирование матрицы в Excel

Транспонирование матрицы — операция над матрицей, при которой столбцы заменяются строками с соответствующими номерами. Обозначим транспонированную матрицу АТ.

Пусть дана матрица А размерностью 3х4, с помощью функции =ТРАНСП() вычислим транспонированную матрицу АТ, причем размерность этой матрицы будет 4х3.

Выделим диапазон Н3:J6, в который будут введены значения транспонированной матрицы.

На вкладке Формулы выберем Вставить функцию, выберем категорию Ссылки и массивы — функция ТРАНСПОК.

В диалоговом окне Аргументы функции указываем диапазон массива В3:Е5, содержащего элементы матрицы А. Нажимаем на клавиатуре сочетание клавиш Shift+Ctrl и щелкаем левой кнопкой мыши по кнопке ОК.

ВАЖНО. Если просто нажать ОК, то программа вычислит значение только первой ячейки диапазона матрицы АТ.

Нажмите для увеличения

Мы получили транспонированную матрицу.

Нахождение обратной матрицы в Excel

Матрица А-1 называется обратной для матрицы А, если АžА-1-1žА=Е, где Е — единичная матрица. Следует отметить, что обратную матрицу можно найти только для квадратной матрицы (одинаковое количество строк и столбцов).

Пусть дана матрица А размерностью 3х3, найдем для неё обратную матрицу с помощью функции =МОБР().

Для этого выделим диапазон G3:I5, который будет содержать элементы обратной матрицы, на вкладке Формулы выберем Вставить функцию.

В диалоговом окне Вставка функции выберем категорию Математические — функция МОБРОК.

В диалоговом окне Аргументы функции указываем диапазон массива В3:D5, содержащего элементы матрицы А. Нажимаем на клавиатуре сочетание клавиш Shift+Ctrl и щелкаем левой кнопкой мыши по кнопке ОК.

ВАЖНО. Если просто нажать ОК, то программа вычислит значение только первой ячейки диапазона матрицы А-1.

Нажмите для увеличения

Мы получили обратную матрицу.

Нахождение определителя матрицы в Excel

Определитель матрицы — это число, которое является важной характеристикой квадратной матрицы.

Как найти определить матрицы в Excel

Пусть дана матрица А размерностью 3х3, вычислим для неё определитель с помощью функции =МОПРЕД().

Для этого выделим ячейку Н4, в ней будет вычислен определитель матрицы, на вкладке Формулы выберем Вставить функцию.

В диалоговом окне Вставка функции выберем категорию Математические — функция МОПРЕДОК.

В диалоговом окне Аргументы функции указываем диапазон массива В3:D5, содержащего элементы матрицы А. Нажимаем ОК.

Нажмите для увеличения

Мы вычислили определитель матрицы А.

В заключение обратим внимание на важный момент. Он касается тех операций над матрицами, для которых мы использовали встроенные в программу функции, а в результате получали новую матрицу (умножение матриц, нахождение обратной и транспонированной матриц). В матрице, которая получилась в результате операции, нельзя удалить часть элементов. Т.е. если мы выделим, например, один элемент матрицы и нажмём Del, то программа выдаст предупреждение: Нельзя изменять часть массива.

Нажмите для увеличения

Мы можем удалить только все элементы этой матрицы.

Видеоурок

Кратко об авторе:

Шамарина Татьяна НиколаевнаШамарина Татьяна Николаевна — учитель физики, информатики и ИКТ, МКОУ «СОШ», с. Саволенка Юхновского района Калужской области. Автор и преподаватель дистанционных курсов по основам компьютерной грамотности, офисным программам. Автор статей, видеоуроков и разработок.

Спасибо за Вашу оценку. Если хотите, чтобы Ваше имя
стало известно автору, войдите на сайт как пользователь
и нажмите Спасибо еще раз. Ваше имя появится на этой стрнице.


ФЕДЕРАЛЬНОЕ
АГЕНТСТВО ПО ОБРАЗОВАНИЮ

ГОСУДАРСТВЕННОЕ
ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

ВЫСШЕГО
ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

ДОНСКОЙ
ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Кафедра
«Информатика»

СОЗДАНИЕ
МАКРОСОВ-ФУНКЦИЙ В EXCEL

Методические
указания к выполнению лабораторных
работ

по
дисциплине «Информационные технологии»

для
студентов технических специальностей

Ростов-на-Дону
2008

Составители:
д. т. н., проф. Б. В. Соболь, к. ф.-м. н., доц.
И. М. Пешхоев

Создание
макросов-функций в Excel:
Методические указания к выполнению
лабораторных работ по дисциплине
«Информационные технологии» для
студентов технических специальностей.
— Ростов н/Д: Издательский центр ДГТУ,
2008. — 16 с.

Методические
указания предназначены для проведения
лабораторных работ по дисциплине
«Информационные технологии» для
специальностей технического профиля.
Предлагается набор заданий к лабораторным
занятиям и краткие методические указания
к их выполнению. Целью лабораторных
работ является использование макросов
Excel
для решения задач, часто встречающихся
в инженерных расчетах.

Печатается
по решению методической комиссии
факультета «Информатика и вычислительная
техника»

Научный
редактор доцент
Г. И. Каныгин

©
Издательский центр ДГТУ, 2008.

Лабораторная
работа № 1

Тема:
Программирование макросов для функций,
задаваемых с условиями.

Цель
работы: Научиться использовать макросы
Excel
для упрощения вычислений.

Форма
отчета: Выполнение индивидуального
зачетного задания.

Примеры
выполнения лабораторной работы

Пример
1.

Вычислить для произвольно заданного
значения переменной x
значение функции

Решение
с помощью формулы
Excel.
Создадим новый файл в программе Excel.
Оформление решения показано в таблице
1.

На
Лист1 в ячейках A1
и B1
введем обозначения x
и y.

Присвоим
ячейке A2
имя x.
Для этого выполним команду «Вставка —
Имя — Присвоить — x».

Пусть
значение переменной x
равно 0,5. Запишем число 0,5 в ячейке A2,
а значение функции y
вычислим в ячейке B2.
Для этого введем в B2
формулу

=ЕСЛИ(x<=1;x^3+1;ЕСЛИ(x<=3;SIN(x);EXP(-x)*x))

Таблица
1

A

B

1

x

y

2

0,5

=ЕСЛИ(x<=1;x^3+1;ЕСЛИ(x<=3;SIN(x);EXP(-x)*x))

В
результате вычисления в ячейке B2
появится значение 1,125.

Введем
в ячейку A2
значение 1,5. Тогда в B2
появится значение 0,997494987. Если введем
в ячейку A2
значение 3,5, то в B2
появится значение 0,105690842.

Решение
с помощью макроса
Excel.
Создадим
в программе Excel
пользовательскую функцию y(x)
для вычисления данной функции, пользуясь
встроенным языком Visual
Basic.

Приведем
алгоритм создания пользовательcкой
функции-макроса:

1)
Выполним команду меню «Сервис — Макрос
— Редактор
Visual
Basic».
Откроется окно «Microsoft
Visual
Basic».

2)
Выполним команду меню «Insert
— Module»
и введём текст программы-функции
(Комментарий после апострофа вводить
не надо)

Function
y(x)
‘ Заголовок описания функции y(x)

If
x <= 1 Then ‘ если
x <= 1 то

y
= x ^ 3 + 1 ‘ y = x ^ 3 + 1

ElseIf
x
<= 3 Then
‘ иначе если x
<= 3 то

y
= Sin(x) ‘ y = Sin(x)

Else
‘ иначе

y
= Exp(-x) * x ‘ y = Exp(-x) * x

End
If
‘ конец оператора если

End
Function
‘ конец описания функции

Теперь
в ячейках любого листа данной книги
(файла) программы Excel
можно в формулах использовать созданную
функцию.

Например,
введем в ячейки С2, С3 и С4 соответственно
формулы =y(0,5),
=y(1,5),
=y(3,5).
В этих ячейках получим значения 1,125,
0,997495, 0,105691.

Пример
2.

Построить таблицу значений и график
функции из примера 2 на отрезке

с шагом 0,2.

Решение
с использованием макроса.

Мы будем использовать макрос-функцию
y(x),
созданную в примере 1, поэтому откроем
файл примера 1 и перейдем на Лист2.

В
ячейках A1
и B1
введем обозначения x
и y.

Введем
в A2,
A3
значения 0 и 0,2. Выделим ячейки A2:A3
и протянем маркер заполнения (правый
нижний угол) до ячейки A12.

Введем
в B2
формулу =y(A2).
Протянем ячейку B2
маркером заполнения вниз до B12.
Оформление решения показано в таблице
2.

Таблица
2

A

B

1

x

y

2

0

1

3

0,2

1,008

4

0,4

1,064

5

0,6

1,216

6

0,8

1,512

7

1

2

8

1,2

0,932039

9

1,4

0,98545

10

1,6

0,999574

11

1,8

0,973848

12

2

0,909297

Выделим
диапазон A1:B12
и щелкнем указателем мыши на панели
инструментов ярлык «Мастер диаграмм».
Выберем тип «Точечная» и кнопку «Готово».

Построить
таблицу значений и график данной функции
в указанном диапазоне с заданным шагом.
Вариант задания выбрать из таблицы 3.

Таблица
3

№ варианта

Функция

Отрезок

Шаг

1

[0;
3]

0,1

2

[1;
3]

0,2

3

[0;
3]

0,3

4

[1;
5]

0,2

5

[0;
3]

0,1

6

[2;
5]

0,25

Продолжение
табл. 3

№ варианта

Функция

Отрезок

Шаг

7

[3;
5]

0,25

8

[0;
3]

0,1

9

[1;
3]

0,4

10

[0;
3]

0,05

11

[1;
5]

0,4

12

[0;
4]

0,2

13

[2;
5]

0,3

Окончание
табл. 3

№ варианта

Функция

Отрезок

Шаг

14

[0;
5]

0,4

15

[1;
6]

0,5

16

[0;
3]

0,1

17

[1;
3]

0,2

18

[0;
3]

0,3

19

[0;
5]

0,2

20

[0;
3]

0,1

Лабораторная
работа № 2

Тема:
Программирование макросов для функций,
параметрами и/или значениями которых
являются массивы.

Цель
работы: Научиться использовать макросы
Excel
для упрощения вычислений с матрицами
и векторами.

Форма
отчета: Выполнение индивидуального
зачетного задания.

Пример
выполнения лабораторной работы

Пример
3.
Вычислить
таблицу значений вектор-функции
U(t)
= U(x,
y,
z),
где x
= x(t)
= t
2,
y
= y(t)
= sin
t,
z
= z(t)
= cos
t,

для
значений переменной t
= 0; 0,1; …, 1.

Решение
с помощью макроса.

Создадим макрос-функцию U(t),
которая вычисляет значение данной
вектор-функции.

1)
Выполним команду меню «Сервис — Макрос
— Редактор
Visual
Basic».
Откроется окно «Microsoft
Visual
Basic».

2)
Выполним команду меню «Insert
— Module»
и введём текст следующей программы-функции

Option
Base
1 ‘ Нижнее значение индекса в массивах
равно 1

Function
U(t)

Dim
uu(3)
‘ Описание вектора из трех
элементов

x
= t
^ 2: uu(1)
= x
‘ вычисление компонент вектор-функции

y
= Sin(t): uu(2) = y

z
= Cos(t): uu(3) = z

U
= uu
‘ присваивание имени U
функции вектора uu

End
Function

3)
Перейдем из редактора Visual
Basic
в Excel
и введем в ячейках A1:D1
обозначения, как показано в табл. 4.

Таблица
4

A

B

C

D

1

t

x

y

z

2

0

0

0

0

3

0,1

0

0,01

0,099833

4

0,2

0

0,04

0,198669

5

0,3

0

0,09

0,29552

6

0,4

0

0,16

0,389418

7

0,5

0

0,25

0,479426

8

0,6

0

0,36

0,564642

9

0,7

0

0,49

0,644218

10

0,8

0

0,64

0,717356

11

0,9

0

0,81

0,783327

12

1

0

1

0,841471

Введем
в ячейки A2,
A3
значения 0 и 0,1. Выделим ячейки A2:A3
и маркером заполнения протянем вниз до
A12.

Выделим
ячейки B2:D2,
введем формулу =U(A2) и удерживая нажатыми
клавиши Ctrl
и Shift
нажмем Enter.
В ячейках B2:D2
появятся числовые значения.

Выделим
ячейки B2:D2
и маркером заполнения протянем вниз до
строки B12:D12.

Пример
4.
Вычислить
суммы элементов строк матрицы, содержащей
4 строки и 3 столбца (табл. 5).

Таблица
5

1

-1

9

2

2

4

3

3

1

4

5

3

Решение
с помощью встроенных функций
Excel.
Создадим
файл программы Excel.

Запишем
элементы данной матрицы в диапазоне
A1:C4
(табл. 6).

В
ячейку D1
введем формулу =СУММ(A1:C1).

Выделим
ячейку D1
и протянем маркером заполнения вниз до
ячейки D4.
В столбце D1:D4
получим суммы элементов соответствующих
строк матрицы.

Решение
с помощью макроса.

Создадим макрос-функцию Sum_str(x),
которая для заданной матрицы x,
содержащей M
строк и N
столбцов, вычисляет вектор-столбец из
M
элементов, содержащий суммы элементов
соответствующих строк матрицы.

1)
Выполним команду меню «Сервис — Макрос
— Редактор
Visual
Basic».
Откроется окно «Microsoft
Visual
Basic».

2)
Выполним команду меню «Insert
— Module»
и введём текст следующей программы-функции

Option
Base 1

Function
Sum_str(x)

Dim
y()

Dim
M As Integer, N As Integer

M
= x.Rows.Count

N
= x.Columns.Count

ReDim
y(M)

For
i = 1 To M:

y(i)
= 0: For j = 1 To N: y(i) = y(i) + x(i, j): Next j

Next
i

Sum_str
= Application.Transpose(y)

End
Function

3)
Выделим диапазон ячеек E1:E4,
введем формулу =Sum_str(A1:C4) и удерживая
нажатыми клавиши Ctrl
и Shift
нажмем Enter.
В ячейках E1:E4
появятся числовые значения, совпадающие
со значениями в D1:D4.

Таблица
6

A

B

C

D

E

1

1

-1

9

9

9

2

2

2

4

8

8

3

3

3

1

7

7

4

4

5

3

12

12

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Внезапно появились лабораторные :)

Задачка такая:

Создать матрицу размера n x n, заполнить случайными числами от (-20 до 30). Сформировать одномерный массив от 1 до n, каждый элемент которого равен произведению положительных четных элементов данного столбца.

Решаем так (естественно все делаем в Excel):

[code lang=»vb»]

Public Sub glav_diag()
Dim i As Integer ‘ Индекс строки
Dim j As Integer ‘ Индекс столбца
Dim q As Double ‘ Переменная результата для столбца
Dim cond As Integer ‘ Дополнительная переменная. Сколько раз выполнилось условие. Ее в принципе можно сделать булевой

n = InputBox(«n=») ‘ Просим ввести n — размерность массива. У нас он всегда квадратный

ReDim arr(n, n) ‘ Объявляем его
q = 1 ‘ Так как у нас по условию «произведение», то мы вынуждены написать тут 1, иначе (в случае 0) произведение всегда будет равно 0
cond = 0 ‘ условие пока не выполнилось
‘ Generation of array
For i = 1 To n
For j = 1 To n
arr(i, j) = Int((-20 — 30 + 1) * Rnd + 30) ‘ Рандом от -20 до 30
Cells(i, j).Value = arr(i, j) ‘ Забить это в ячейку
Cells(i, j).Interior.ColorIndex = xlNone ‘ Убрать цвет если он был
Next j
Next i

‘ Обработка и вычисления
For j = 1 To n
For i = 1 To n
If ((arr(i, j) > 0) And (arr(i, j) Mod 2 = 0)) Then ‘ Если значение массива больше 0 и четное
q = q * arr(i, j) ‘ тогда домножаем его на q и записываем новый результат в q
cond = cond + 1 ‘ Если условие выполнилось увеличиваем переменную
Cells(i, j).Interior.Color = vbCyan ‘ Закрашиваем соответствующую ячейку на листе цветом
End If
Next i
If (cond > 0) Then ‘ Если условие выше выполнилось хотя бы раз…
Cells(n + 1, j).Value = q ‘ тогда записываем значение вычислений в ячейку ниже нашей матрицы
Cells(n + 1, j).Interior.Color = vbGreen ‘ и красим в заленый
Else
Cells(n + 1, j).Value = 0 ‘ Если не выполнилось пишем туда 0 (таких элементов нет) просто q записать нельзя, так как он равен 1
Cells(n + 1, j).Interior.Color = vbGreen ‘ и тоже в зеленый
End If
cond = 0
q = 1
Next j
End Sub

[/code]

Вот такой простой код. Все комментарии в коде.

Скачать тестовым документом

Результат работы:

Группа: Авторы

Ранг: Ветеран

Сообщений: 903


Репутация:

290

±

Замечаний:
0% ±


Excel 2013

pacifizd, здравствуйте.

Сначала несколько организационных слов. Добро пожаловать на форум. Просьба следовать местным правилам и выкладывать собственные файлы, примеры данных. Тратить время на составление примера за создателя темы — занятие низко продуктивное и большинство помогающих от этого здраво воздержится. А значит и ответ получить будет сложнее.

Во вложении № 1 макрос. После нажатия на кнопку укажите ячейку, куда необходимо вывести данные.

UPD: Во вложении № 2 формула.

Код программы:


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279

Сообщение отредактировал RioranПятница, 17.10.2014, 16:23

   Pandochka

28.06.10 — 13:09

помогите пожалуйста составить программу, думаю это не сложно, но сама вообще не понимаю тему макросов и их создание.

пожалуйста, очень срочно!

Найти количество неотрицательных элементов второго столбца матрицы nхn и минимальный элемент ниже побочной диагонали.

   Asmody

1 — 28.06.10 — 13:11

ух ты! макросы в 1С? это что-то новое. пойду за попкорном

   Андрюха

2 — 28.06.10 — 13:11

>> «думаю это не сложно, но сама вообще не понимаю»
Бугага

>> Найти количество неотрицательных элементов
Это где? В Excele что ли?

   Pandochka

3 — 28.06.10 — 13:12

да, в Excel ))

   Maxus43

4 — 28.06.10 — 13:12

(1) а что? по Кому в Эксель и запускаем макрос, предварительно записав в эксель данные… результат забираем в 1с и вуаля!

   Ненавижу 1С

5 — 28.06.10 — 13:13

я думаю это контрольная типо

   Maxus43

6 — 28.06.10 — 13:14

ну я надеюсь, что не собеседование)

   Pandochka

7 — 28.06.10 — 13:14

там просто в Excel нужно

ну это не контрольная, но типа того)

   Андрюха

9 — 28.06.10 — 13:15

По адресам ячеек смотри их значения типа Range(«A4»)

   kas4info

12 — 28.06.10 — 13:25

используй запись макросов в экселе: «запись макроса». Включаешь, делаешь «руками» нужные действия с матрицей, потом останавливаешь «запись макроса» и получаешь готовый скрипт. редактируешь его (убираешь лишнее и т.п.).

   Pandochka

13 — 28.06.10 — 13:30

kas4info, также моя проблема состоит в том, что я не знаю бейсик =(
поэтому не могу сделать нужные действия с матрицей…

   Ненавижу 1С

14 — 28.06.10 — 13:34

(13) а что ты знаешь?

   Pandochka

18 — 28.06.10 — 13:40

в информатике, к сожалению, почти ничего

   Denp

19 — 28.06.10 — 13:43

(0) точно макросы, а не обычные формулы?

   Pandochka

20 — 28.06.10 — 13:44

да, сказали сделать это с помощью макросов…

   Denp

21 — 28.06.10 — 13:46

(20) а одногруппники на что?)
тут записью макроса не отделаешься, прогить надо. Как матрица задается?

   Pandochka

22 — 28.06.10 — 13:48

одни одногруппники ничего не знают, другие ботанат и ничего не рассказывают =/
матрица задается случайным набором чисел

   Denp

23 — 28.06.10 — 13:48

(22) а размер матрицы?

   kas4info

24 — 28.06.10 — 13:50

(13) погугли справку по VBA,  там все достаточно просто;)

   Pandochka

25 — 28.06.10 — 14:03

размер матрицы любой

эх, но все же я не понимаю =(

   Denp

26 — 28.06.10 — 14:08

(25) что-то мне кажется, что это должна быть функция на VBA, в которую передается квадратный массив.
то бишь программинг на ВБА в чистом виде

   Pandochka

27 — 28.06.10 — 14:13

мне от твоих слов еще хуже становится, т.к. вообще не знаю что это =(
ты сможешь мне помочь?

   Denp

28 — 28.06.10 — 14:34

(27) я — нет. Не переношу ВБА.

   dk

29 — 28.06.10 — 14:39

(27) блондинка или любитель халявы?

   ildary

30 — 28.06.10 — 15:32

(29) Сколько помню блондинок в институте — у них хватало ума и женских чар развести любого ботана (включая меня) на помощь.

   smaharbA

31 — 28.06.10 — 15:32

так пойдет ?

   Set книга = ThisWorkbook

   Set листы = книга.Worksheets

   Set лист = листы.Item(1)

   Set диапазон = лист.UsedRange ‘Или квадратный диапазон

   Dim массив()

   количество = 0

   Dim врем

   массив = лист.UsedRange

   For Сч = 1 To UBound(массив, 2)

       If массив(Сч, 2) >= 0 Then количество = количество + 1

   Next

   MsgBox количество

   For Сч = 1 To UBound(массив, 1) — 1

       If IsEmpty(врем) Or врем >= массив(Сч + 1, Сч) Then врем = массив(Сч + 1, Сч)

   Next

   MsgBox врем

   Pandochka

32 — 28.06.10 — 15:46

русая)
эм…понимаете…в моей группе ботаны — девушки

smaharbA
думаю пойдет, я не понимаю что тут написано
спасибо тебе)

   Жан Пердежон

33 — 28.06.10 — 16:34

(32) так определитесь сначала: помочь надо или сделать за Вас?

   Pandochka

34 — 28.06.10 — 19:26

если не затруднит, можно и сделать)

$ 50 если не затруднит

Под матрицей подразумевается набор ячеек, расположенных непосредственно друг возле друга и которые образуют вместе прямоугольник. Не требуется особых навыков, чтобы выполнять различные действия с матрицей, достаточно тех же, какие используются во время работы с классическим диапазоном.

Каждая матрица имеет свой адрес, записывающийся аналогичным диапазону способом. Первая составная часть – первая ячейка диапазона (расположенная в верхнем левом углу), а второй – последняя ячейка, которая находится в нижнем правом углу. 

Содержание

  1. Формулы массива
  2. Что можно делать с матрицами
  3. Транспонирование
  4. Сложение
  5. Умножение
  6. Обратная матрица
  7. Поиск определителя матрицы
  8. Несколько примеров
  9. Умножение и деление
  10. Метод 1
  11. Метод 2
  12. Сложение и вычитание
  13. Метод 1
  14. Метод 2
  15. Пример транспонирования матрицы
  16. Поиск обратной матрицы
  17. Выводы

Формулы массива

В подавляющем количестве задач при работе с массивами (а матрицы и являются таковыми) используются формулы соответствующего типа. Базовое их отличие от обычных заключается в том, что последние выводят всего одно значение. Для применения формулы массива необходимо осуществить несколько действий:

  1. Выделить набор ячеек, где будут выводиться значения. 
  2. Непосредственно введение формулы. 
  3. Нажатие последовательности клавиш Ctrl + Shift + Ввод.

После осуществления этих простых действий в поле ввода отображается формула массива. Ее можно отличить от обычной по фигурным скобкам.

Для редактирования, удаления формул массива, надо выделить требуемый диапазон и сделать то, что нужно. Чтобы редактировать матрицу, нужно использовать ту же комбинацию, что и для ее создания. При этом нет возможности редактировать отдельный элемент массива.

Что можно делать с матрицами

В целом, есть огромное количество действий, применение которых возможно для матриц. Давайте каждое из них рассмотрим более подробно.

Транспонирование

Многие люди не понимают значения этого термина. Представьте, что вам нужно поменять строки и колонки местами. Вот это действие и называется транспонированием. 

Перед тем, как это осуществить, необходимо выделить отдельную область, которая имеет такое же количество строчек, сколько столбцов есть у исходной матрицы и такое же количество столбцов. Чтобы более наглядно понять, как это работает, посмотрите на этот скриншот.Операции с матрицами в Excel

Далее есть несколько методов, как можно осуществить транспонирование. 

Первый способ следующий. Для начала нужно выделить матрицу, после чего скопировать ее. Далее выделяется диапазон ячеек, куда должен быть вставлен транспонированный диапазон. Далее открывается окно «Специальная вставка».

Там есть множество операций, но нам нужно найти радиокнопку «Транспонировать». После совершения этого действия нужно подтвердить его нажатием клавиши ОК.Операции с матрицами в Excel

Есть еще один способ, с помощью которого можно транспонировать матрицу. Сперва надо выделить ячейку, расположенную в верхнем левом углу диапазона, отведенного под транспонированную матрицу. Далее открывается диалоговое окно с функциями, где есть функция ТРАНСП. Ниже в примере вы более подробно узнаете, как это сделать. В качестве параметра функции используется диапазон, соответствующий изначальной матрице.Операции с матрицами в Excel

После нажатия кнопки ОК сначала будет показано, что вы допустили ошибку. Ничего в этом страшного нет. Все потому, что вставленная нами функция не определена, как формула массива. Поэтому нам нужно совершить такие действия:

  1. Выделить набор ячеек, отведенных под транспонированную матрицу.
  2. Нажать клавишу F2.
  3. Нажать на горячие клавиши Ctrl + Shift + Enter.

Главное достоинство метода заключается в способности транспонированной матрицы сразу корректировать содержащуюся в ней информацию, как только вносятся данные в изначальную. Поэтому рекомендуется использовать именно данный способ.

Сложение

Эта операция возможна лишь применительно к тем диапазонам, количество элементов которых такое же самое. Проще говоря, у каждой из матриц, с которыми пользователь собирается работать, должны быть одинаковые размеры. И приводим скриншот для наглядности.Операции с матрицами в Excel

В матрице, которая должна получиться, нужно выделить первую ячейку и ввести такую формулу.

=Первый элемент первой матрицы + Первый элемент второй матрицы 

Далее подтверждаем ввод формулы с помощью клавиши Enter и используем автозаполнение (квадратик в правом нижнем углу), чтобы скопировать все значения на новую матрицу.Операции с матрицами в Excel

Умножение

Предположим, у нас есть такая таблица, которую следует умножить на 12.Операции с матрицами в Excel

Догадливый читатель может легко понять, что метод очень похож на предыдущий. То есть, каждая из ячеек матрицы 1 должна умножаться на 12, чтобы в итоговой матрице каждая ячейка содержала значение, умноженное на этот коэффициент.

При этом важно указывать абсолютные ссылки на ячейки.

Итого, получится такая формула.

=A1*$E$3Операции с матрицами в Excel

Дальше методика аналогична предыдущей. Нужно это значение растянуть на необходимое количество ячеек. 

Предположим, что необходимо перемножить матрицы между собой. Но есть лишь одно условие, при котором это возможно. Надо, чтобы количество столбцов и строк у двух диапазонов было зеркально одинаковое. То есть, сколько столбцов, столько и строк.Операции с матрицами в Excel

Чтобы было более удобно, нами выделен диапазон с результирующей матрицей. Надо переместить курсор на ячейку в верхнем левом углу и ввести такую формулу =МУМНОЖ(А9:С13;Е9:H11). Не стоит забыть нажать Ctrl + Shift + Enter.Операции с матрицами в Excel

Обратная матрица

Если наш диапазон имеет квадратную форму (то есть, количество ячеек по горизонтали и вертикали одинаковое), то тогда получится найти обратную матрицу, если в этом есть такая необходимость. Ее величина будет аналогичной исходной. Для этого используется функция МОБР.

Для начала следует выделить первую ячейку матрицы, в какую будет вставляться обратная. Туда вводится формула =МОБР(A1:A4). В аргументе указывается диапазон, для какого нам надо создать обратную матрицу. Осталось только нажать Ctrl + Shift + Enter, и готово.Операции с матрицами в Excel

Поиск определителя матрицы

Под определителем подразумевается число, находящееся матрицы квадратной формы. Чтобы осуществить поиск определителя матрицы, существует функция – МОПРЕД.

Для начала ставится курсор в какой-угодно ячейке. Далее мы вводим =МОПРЕД(A1:D4)

Несколько примеров

Давайте для наглядности рассмотрим некоторые примеры операций, которые можно осуществлять с матрицами в Excel.

Умножение и деление

Метод 1

Предположим, у нас есть матрица A, имеющая три ячейки в высоту и четыре – в ширину. Также есть число k, которое записывается в другой ячейке. После выполнения операции умножения матрицы на число появится диапазон значений, имеющий аналогичные размеры, но каждая ее часть умножается на k.Операции с матрицами в Excel

Диапазон B3:E5 – это исходная матрица, которая будет умножаться на число k, которое в свою очередь расположено в ячейке H4. Результирующая матрица будет находиться в диапазоне K3:N5. Исходная матрица будет называться A, а результирующая – B. Последняя образуется путем умножения матрицы А на число k. 

Далее вводится =B3*$H$4 в ячейку K3, где В3 — элемент A11 матрицы А.

Не стоит забывать о том, ячейку H4, где указано число k необходимо вводить в формулу с помощью абсолютной ссылки. Иначе значение будет изменяться при копировании массива, и результирующая матрица потеряет работоспособность.Операции с матрицами в Excel

Далее маркер автозаполнения (тот самый квадратик в правом нижнем углу) используется для того, чтобы скопировать значение, полученное в ячейке K3, во все другие ячейки этого диапазона.Операции с матрицами в Excel

Вот у нас и получилось умножить матрицу A на определенное число и получить на выходе матрицу B.

Деление осуществляется аналогичным образом. Только вводить нужно формулу деления. В нашем случае это =B3/$H$4.

Метод 2

Итак, основное отличие этого метода в том, в качетве результата выдается массив данных, поэтому нужно применить формулу массива, чтобы заполнить весь набор ячеек.

Необходимо выделить результирующий диапазон, ввести знак равно (=), выделить набор ячеек, с соответствующими первой матрице размерами, нажать на звездочку. Далее выделяем ячейку с числом k. Ну и чтобы подтвердить свои действия, надо нажать на вышеуказанную комбинацию клавиш. Ура, весь диапазон заполняется.Операции с матрицами в Excel

Деление осуществляется аналогичным образом, только знак * нужно заменить на /.

Сложение и вычитание

Давайте опишем несколько практических примеров использования методов сложения и вычитания на практике.

Метод 1

Не стоит забывать, что возможно сложение лишь тех матриц, размеры которых одинаковые. В результирующем диапазоне все ячейки заполняются значением, являющим собой сумму аналогичных ячеек исходных матриц.

Предположим, у нас есть две матрицы, имеющие размеры 3х4. Чтобы вычислить сумму, следет в ячейку N3 вставить такую формулу:

=B3+H3

Тут каждый элемент являет собой первую ячейку матриц, которые мы собрались складывать. Важно, чтобы ссылки были относительными, поскольку если использовать абсолютные, не будут отображаться правильные данные.Операции с матрицами в Excel

Далее, аналогично умножению, с помощью маркера автозаполнения распространяем формулу на все ячейки результирующей матрицы.Операции с матрицами в Excel

Вычитание осуществляется аналогично, за тем лишь исключением, что используется знак вычитания (-), а не сложения.

Метод 2

Аналогично методу сложения и вычитание двух матриц, этот способ подразумевает использование формулы массива. Следовательно, в качестве ее результата будет выдаваться сразу набор значений. Поэтому нельзя редактировать или удалять какие-то элементы.

Сперва надо выделить диапазон, отделенный под результирующую матрицу, а потом нажать на «=». Затем надо указать первый параметр формулы в виде диапазона матрицы А, нажать на знак + и записать второй параметр в виде диапазона, соответствующему матрице B. Подтверждаем свои действия нажатием комбинации Ctrl + Shift + Enter. Все, теперь вся результирующая матрица заполнена значениями.Операции с матрицами в Excel

Пример транспонирования матрицы

Допустим, нам надо создать матрицу АТ из матрицы А, которая у нас есть изначально методом транспонирования. Последняя имеет, уже по традиции, размеры 3х4. Для этого будем использовать функцию =ТРАНСП().Операции с матрицами в Excel

Выделяем диапазон для ячеек матрицы АТ.Операции с матрицами в Excel

Для этого надо перейти на вкладку «Формулы», где выбрать опцию «Вставить функцию», там найти категорию «Ссылки и массивы» и найти функцию ТРАНСП. После этого свои действия подтверждаются кнопкой ОК.

Далее переходим в окно «Аргументы функции», где вводится диапазон B3:E5, который повторяет матрицу А. Далее надо нажать Shift + Ctrl, после чего кликнуть «ОК».

Важно. Нужно не лениться нажимать эти горячие клавиши, потому что в ином случае будет рассчитано только значение первой ячейки диапазона матрицы АТ.

В результате, у нас получается такая транспонированная таблица, которая изменяет свои значения вслед за исходной.Операции с матрицами в Excel

Операции с матрицами в Excel

Поиск обратной матрицы

Предположим, у нас есть матрица А, которая имеет размеры 3х3 ячеек. Мы знаем, что для поиска обратной матрицы необходимо использовать функцию =МОБР().Операции с матрицами в Excel

Теперь опишем, как это делать на практике. Сначала необходимо выделить диапазон G3:I5 (там будет располагаться обратная матрица). Необходимо найти на вкладке «Формулы» пункт «Вставить функцию».Операции с матрицами в Excel

Откроется диалог «Вставка функции», где нужно выбрать категорию «Математические». И там в перечне будет функция МОБР. После того, как мы ее выберем, нужно нажать на клавишу ОК. Далее появляется диалоговое окно «Аргументы функции», в котором записываем диапазон B3:D5, который соответствует матрице А. Далее действия аналогичные транспонированию. Нужно нажать на комбинацию клавиш Shift + Ctrl и нажать ОК.

Выводы

Мы разобрали некоторые примеры, как можно работать с матрицами в Excel, а также описали теорию. Оказывается, что это не так страшно, как может показаться на первый взгляд, не так ли? Это только звучит непонятно, но на деле с матрицами среднестатистическому пользователю приходится иметь дело каждый день. Они могут использоваться почти для любой таблицы, где есть сравнительно небольшое количество данных. И теперь вы знаете, как можно себе упростить жизнь в работе с ними.

Оцените качество статьи. Нам важно ваше мнение:

Понравилась статья? Поделить с друзьями:
  • Макрос для копирования файла excel
  • Макрос для копирования только значений в excel
  • Макрос для копирования текста word
  • Макрос для копирования строки в excel
  • Макрос для консолидации данных в excel