Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2010, 09:42   #1
Lyudmila721
Новичок
Джуниор
 
Регистрация: 17.05.2010
Сообщений: 1
По умолчанию Матрицы в VBA

Подскажите, пожалуйста, нужно сформировать матрицу. Правильно ли решение? 0-ые элементы надо ли указывать в условии?? или они по-умолчанию?
0 0 0 0 5 5 5 5
0 0 0 5 0 5 5 5
0 0 5 0 0 5 5 5
0 5 0 0 0 5 5 5
5 5 5 5 5 5 5 5


Решение
Sub Zadanie_2()
Const N=5, M=8 ‘ Размерность матрицы
Dim B(N,M) As Integer
Dim I , J As Integer ‘ I-номер строки, J-номер столбца
For I=1 To N
For J=1 To M
If ((J<=5) And (I+J=N+1)) OR ((I=5) OR (J =6) OR (J =7) OR (J =8) ) Then B(I,J) = 5
Else
B(I,J) = 0
End If

Next J
Next I
‘вывод матрицы на Лист 2
WorkSheets(“Лист2”).Select
For I=1 To N
For J=1 To N
Cells(I+1,J)=B(I,J)
Next J
Next I
End Sub
Lyudmila721 вне форума Ответить с цитированием
Старый 17.05.2010, 10:42   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

У меня вот что получилось:
Код:
Sub test()
    Const N = 5, M = 8    ' Размерность матрицы
    Dim B(1 To N, 1 To M) As Integer
    Dim I As Integer, J As Integer  ' I-номер строки, J-номер столбца
    For I = 1 To N
        For J = 1 To M
            B(I, J) = 5 ' по умолчанию
            If I + J <> 6 And I < 5 And J < 5 Then B(I, J) = 0
        Next J
    Next I
    'вывод матрицы на Лист 2, начиная с ячейки
    Worksheets("Лист2").Cells(1, 1).Resize(N, M).Value = B
End Sub




Можно и так: (по умолчанию в массиве нули)

Код:
Sub test()
    Const N = 5, M = 8    ' Размерность матрицы
    Dim B(1 To N, 1 To M) As Integer
    Dim I As Integer, J As Integer  ' I-номер строки, J-номер столбца
    For I = 1 To N
        For J = 1 To M
            If Not (I + J <> 6 And I < 5 And J < 5) Then B(I, J) = 5
        Next J
    Next I
    'вывод матрицы на Лист 2, начиная с ячейки
    Worksheets("Лист2").Cells(1, 1).Resize(N, M).Value = B
End Sub

PS: А можно обойтись и без конструкции If ... Then ...
Код:
    For I = 1 To N
        For J = 1 To M
             B(I, J) = 5 * ((I + J <> 6) * (I < 5) * (J < 5) + 1)
        Next J
    Next I
    'вывод матрицы на Лист 2, начиная с ячейки

Последний раз редактировалось EducatedFool; 17.05.2010 в 10:49.
EducatedFool вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
VBA Word,VBA Excel решить 2 задачи fafolo4ka Фриланс 6 05.03.2012 01:15
Построение матрицы в VBA по заданным параметрам. krmn Помощь студентам 5 24.12.2009 19:26
На главную диагональ матрицы поместить наибольшие элементы этой матрицы mivel Помощь студентам 2 23.12.2009 21:19