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:
Darmowy hosting zapewnia PRV.PL |