Räkna med matriser
I detta tips belyses hur vi kan använda oss av flerdimensionella matriser, dels för att läsa in data från ett cellområde och dels utföra beräkningar med.
När vi använder oss av flerdimensionella matriser ökar komplexiteten avsevärt. I gengäld så erbjuder matriser en effektiv och snabb hantering av större datamängder.Matriser som ska läsa in data från arbetsblad måste alltid deklareras som datatypen Variant.
För att tilldela en äkta flerdimensionell matris värden måste vi loopa igenom hela matrisen.
I exemplet används 5 x 5 matriser, både för cellområdet och för de tre matriserna.
Option Explicit
Option Base 1
Sub Rakna_med_Matriser()
'© 2001 Alla rättigheter XL-Dennis
Dim vaCellMatris As Variant
Dim lnMalMatris(1 To 5, 1 To 5) As Long
Dim iMatris(1 To 5, 1 To 5) As Integer
Dim iVarde As Integer, i As Integer, j As Integer
Dim rnOmrade As Range, rnVarde As Range
Dim stMedd As String, stTitel As String
stMedd = "Ett heltalsvärde större än 1 men mindre än 10 måste anges"
stTitel = "Räkna med matriser"
Set rnOmrade = ThisWorkbook.Worksheets("Blad1") _
.Range(Cells(1, 1), Cells(5, 5))
Set rnVarde = ThisWorkbook.Worksheets("Blad1").Range("D8")
'Endast heltalsdelen av inmatat värde beaktas.
iVarde = rnVarde.Value
'För att säkerhetsställa att ett värde inom 1 - 10 anges.
If iVarde < 1 Or iVarde >= 10 Then
MsgBox stMedd, vbInformation, stTitel
rnVarde.Select
Exit Sub
End If
Application.ScreenUpdating = False
vaCellMatris = rnOmrade.Value
'Här tilldelas den andra matrisen värden.
For i = 1 To 5
For j = 1 To 5
iMatris(i, j) = j + j
Next j
Next i
'Beräkning sker och resultatet överförs till en ny matris.
For i = 1 To 5
For j = 1 To 5
lnMalMatris(i, j) = (vaCellMatris(i, j) * iMatris(i, j)) + iVarde
Next j
Next i
'Resultatet överförs till det ursprungliga cellområdet.
rnOmrade.Value = lnMalMatris
Application.ScreenUpdating = True
End Sub