25.07.2017, 12:11
(Dieser Beitrag wurde zuletzt bearbeitet: 25.07.2017, 15:04 von Rabe.
Bearbeitungsgrund: MMULTI zu MMULT korrigiert!
)
Hi,
ich habe diverse Listen:
Dazu lege ich manuell (0 oder 1) auszufüllende 2-dimensionale Matrix (Matrizen) an:
Dann verknüpfe ich in Matrix "Ergebnistabelle 1" mit MMULT() die "Gefährdungszuordnung" mit der "Maßnahmenzuordnung" und danach in Matrix "Ergebnistabelle 2" die Matrix "Zuordnung Mitarbeiter" mit der "Ergebnistabelle 1".
Jetzt kommt auch was raus!
Nun habe ich Fragen zu der MMULT()-Funktion:
Hier mal eine Beispieldatei zum Ausprobieren:
Gefährdungsanalyse.xlsb (Größe: 160,99 KB / Downloads: 3)
Kann diese Auswertung auch noch einfacher und resourcenschonender erzeugt werden als mit den ganzen Matrix-Formeln?
Bei Office-Lösung habe ich folgendes Makro gefunden, daß die MMULT() ersetzt, kann mir das die Auswertung auch lösen?
ich habe diverse Listen:
- Mitarbeiter
- Arbeitsplätze
- Gefährdungen
- Maßnahmen
Dazu lege ich manuell (0 oder 1) auszufüllende 2-dimensionale Matrix (Matrizen) an:
- eine, in der die Mitarbeiter den Arbeitsplätzen zugewiesen werden ("Zuordnung Mitarbeiter")
- eine zweite Matrix, welche Arbeitsplätze welche Gefährdungen beinhalten ("Gefährdungszuordnung")
- eine dritte Matrix, welche Gefährdungen welche Maßnahmen erfordern ("Maßnahmenzuordnung")
Dann verknüpfe ich in Matrix "Ergebnistabelle 1" mit MMULT() die "Gefährdungszuordnung" mit der "Maßnahmenzuordnung" und danach in Matrix "Ergebnistabelle 2" die Matrix "Zuordnung Mitarbeiter" mit der "Ergebnistabelle 1".
Jetzt kommt auch was raus!
Nun habe ich Fragen zu der MMULT()-Funktion:
- ist das richtig, wenn ich so zwei Matrizen miteinander verknüpfe?
- müssen immer gleich viele Zeilen und Spalten in der Ergebnismatrix stehen (z.B. 100 Arbeitsplätze und 100 Maßnahmen) oder kann eines davon auch weniger sein?
- was ist überhaupt die maximale Zahl?
- was ist mit den 5461 Zellen gemeint?
Hier mal eine Beispieldatei zum Ausprobieren:

Kann diese Auswertung auch noch einfacher und resourcenschonender erzeugt werden als mit den ganzen Matrix-Formeln?
Bei Office-Lösung habe ich folgendes Makro gefunden, daß die MMULT() ersetzt, kann mir das die Auswertung auch lösen?
Code:
Public Sub ppp2()
Dim Zeilen As Long
Dim i As Long
Dim j As Long
Dim matrix As Variant
Dim myarray() As Double
Dim b() As Variant
'Zeilen = Sheets("Tabelle1").Range("A1").Value
Zeilen = 10000
matrix = Sheets("Tabelle2").Range("B45:O58")
ReDim myarray(1 To Zeilen, 1 To 14)
For i = 1 To UBound(myarray)
For j = 1 To UBound(myarray, 2)
myarray(i, j) = Val(i & j) 'Application.WorksheetFunction.NormInv(Rnd() + 0.0000000001, 0, 1)
Next j
Next i
'b = Application.WorksheetFunction.MMult(myarray(), matrix)
b = MMULT_X(myarray(), matrix)
Sheets("Tabelle3").Range("A:N").Clear
'Sheets("Tabelle3").UsedRange.Clear
Sheets("Tabelle3").Range("A1").Resize(UBound(b), UBound(b, 2)) = b
End Sub
Function MMULT_X(ar1, ar2)
Dim i As Long
Dim k As Long
Dim n As Long
Dim arErg As Variant
ReDim arErg(LBound(ar1) To UBound(ar1), LBound(ar2, 2) To UBound(ar2, 2))
For i = LBound(arErg) To UBound(arErg)
For k = LBound(arErg, 2) To UBound(arErg, 2)
For n = LBound(ar1, 2) To UBound(ar1, 2)
arErg(i, k) = arErg(i, k) + ar1(i, n) * ar2(n, k)
Next
Next
Next
MMULT_X = arErg
End Function