Multiplicar Duas Matrizes 3×3 em Vba\Excel
Posted by admin on 30 de Dezembro de 2011 | Filed under Exercícios, Línguagens de Programação, Programação
Continuando com a resolução dos meus primeiros exercícios em Vba aqui fica mais um:
Elabore um algoritmo que permita Somar 5 Células na Horizontal a Partir da Célula Seleccionada.
Aqui fica o código que resolve o exercício:
Sub MatrixMult()
Dim a(1 To 3, 1 To 3) As Double, b(1 To 3, 1 To 3) As Double
Dim m(1 To 3, 1 To 3) As Double
Dim i As Integer, j As Integer, k As Integer
Dim s As Double
Dim aCell As Range, bCell As Range, mCell As Range
' guardar valores das células A1:C3 na matriz a()
Set aCell = Range("A1")
For i = 1 To 3 ' linha
For j = 1 To 3 ' coluna
a(i, j) = aCell.Offset(i - 1, j - 1).Value
Next j
Next i
' guardar valores das células E1:G3 na matriz b()
Set bCell = Range("E1")
For i = 1 To 3 ' linha
For j = 1 To 3 ' coluna
b(i, j) = bCell.Offset(i - 1, j - 1).Value
Next j
Next i
' calcula o produto
For i = 1 To 3 ' linha
For j = 1 To 3 ' coluna
s = 0
For k = 1 To 3
s = s + a(i, k) * b(k, j)
Next k
m(i, j) = s
Next j
Next i
' apresentar os valores de m(i,j) nas células I1:K3
Set mCell = Range("I1")
For i = 1 To 3 ' linha
For j = 1 To 3 ' coluna
mCell.Offset(i - 1, j - 1).Value = m(i, j)
Next j
Next i
End Sub
Não sei se a forma como implementei a resolução do exercício é a mais correcta, e por isso fico à espera de comentários, ou mesmo de correcções e dicas de melhoramento do código que apresento.
Share


