ник: sonya
есть программа, в результате которой на 3-ий лист екселя выводится матрица,(дальше в нее надо добавить следующее:) в которой надо пробежаться по 1-ой строке и записать “ti” - номер ненулевых элементов(ti-первый элемент из № ячейки, если допустить, № ячейки – это(ti,tj)). В примере это 1 3
Потом сравнить второе число(т.е 3) в строке с числами(т.е с 1), которые есть в столбце и, если его нет, то занести его в столбец(т.к. 3 – нет, то занести ее в столбец).
Дальше надо перейти на № той строки, который указан последний в столбце(т.е 3).Затем ищем ненулевой элемент в следующей строке(т.е 3-ей). В 3-ей строке ненулевой элемент находится на 2-ом месте, значит пишем 2. Затем смотрим нет ли 2 в столбце(т.к ее нет), то добавляем ее в столбец.Дальше смотрим на 2-ую строку, т.к ненулевой элементстоит на 3-м месте, а 3 уже есть в столбце, то надо выйти из программы
Пример:
2 0 3
0 0 4
0 8 0
1 3
3 2
2
Sub Кнопка1_Щелчок()
'Обьявляются массивы, правда размер не указан, типа Variant.
'В этот тип могут попадать переменные любых типов
Dim MatrArr1(), MatrArr2(), MatrArr3() As Variant
Dim i, j As Integer 'Счетчики цикла
Dim mCols, mRows As Integer 'Задаются строки и столбцы
Dim tmpRange1, tmpRange2, tmpRange3 As String
Application.Workbooks(1).Worksheets(1).Activate
i = 1 'i присваивается значение 1
j = 1 'j присваивается значение 1
Do
i = i + 1 'увеличиваем i на 1
Loop While Cells(i, j).Value <> "" 'до тех пор пока ячейка не станет пустой
mCols = i - 1 'разность элементов строки
i = 1 'i присваивается значение 1
Do
j = j + 1 'увеличиваем j на 1
Loop While Cells(i, j).Value <> "" 'до тех пор пока ячейка не станет пустой
mRows = j - 1 'разность элементов
tmpRange1 = CStr("=Лист1!R1C1:R" & mCols & "C" & mRows & "")
tmpRange2 = CStr("=Лист2!R1C1:R" & mCols & "C" & mRows & "")
tmpRange3 = CStr("=Лист3!R1C1:R" & mCols & "C" & mRows & "")
ActiveWorkbook.Names.Add Name:="Matr1", RefersToR1C1:=tmpRange1
ActiveWorkbook.Names.Add Name:="Matr2", RefersToR1C1:=tmpRange2
ActiveWorkbook.Names.Add Name:="Matr3", RefersToR1C1:=tmpRange3
MatrArr1 = Range("Matr1")
MatrArr2 = Range("Matr2")
MatrArr3 = Range("Matr3")
For i = 1 To mCols '
For j = 1 To mRows '
MatrArr3(i, j) = MatrArr1(i, j) - MatrArr2(i, j) 'Присвоение значения разности матриц MatrArr1 и MatrArr2 матрице MatrArr3
Next j
Next i
Application.Workbooks(1).Worksheets(3).Activate
Range("Matr3").Value = MatrArr3
End Sub