Menu



Główna

Kurs:

Wstęp

Edytor

Pierwszy program

Instrukcje warunkowe

Pętle


Przydatne makra:

Sheet delete

Nie zapisuj

Iloczyn macierzy

IP - ping

Makro: Obliczanie iloczynu macierzy


Oblicza iloczyn dwóch macierzy jednak w stosunku do funkcji MACIERZ.ILOCZYN "widać" składniki poszczególnych wyrazów w formule.

Sub MnozenieMacierzy()
Dim strA, strB, strC As String
Dim macierzA As Range, macierzB As Range
Dim mA, nA, mB, nB As Integer
Dim tempWynik As String
Dim wierszStart, kolumnaStart As Integer
Dim i, j, k, l As Integer

'pobranie od uzytkownika zakresow z macierzami
strA = Application.InputBox("Wskaż zakres macierzy A :", "mnozenie macierzy", , , , , , 8).Address()
strB = Application.InputBox("Wskaż zakres macierzy B :", "mnozenie macierzy", , , , , , 8).Address()

Set macierzA = Range(strA)
Set macierzB = Range(strB)

'wymiary macierzy
mA = macierzA.Rows.Count: nA = macierzA.Columns.Count
mB = macierzB.Rows.Count: nB = macierzB.Columns.Count

'sprawdzenie czy jest tyle samo kolumn w A co wierszy w B
If (nA = mB) Then
'pozcyja wstawienia wyniku :
strC = Application.InputBox("Wskaż komórkę pocz. wyniku :", "mnozenie macierzy", , , , , , 8).Address()
wierszStart = Range(strC).Row - 1: kolumnaStart = Range(strC).Column - 1
'-1 się bierze z późniejszej iteracji od 1

For i = 1 To mA
For j = 1 To nB
tempWynik = "= 0"
For k = 1 To mB
tempWynik = tempWynik & "+" & macierzA.Cells(i, k).Address() _
& "*" & macierzB.Cells(k, j).Address()
Next k
Cells(wierszStart + i, kolumnaStart + j).Value = tempWynik
Next j
Next i
Else
MsgBox "Niepoprawne zakresy"
End If

Set macierzA = Nothing
Set macierzB = Nothing

End Sub

Linki
VBA:


VBA Mania

Anhtony VBA

Shmitti's Vba

Excel Macro

Programy VBA


Inne: