Microsoft Excel

Herbers Excel/VBA-Archiv

Zelbereiche(Matrizen) an Variablen zuweisen

Betrifft: Zelbereiche(Matrizen) an Variablen zuweisen von: tommy
Geschrieben am: 04.07.2008 19:50:43

Hallo Leute,

Problem 1:
Ich möchte einen markierten (keinen vorgegebenen!) Zellbereich einer Tabelle der eine Matrix darstellt einer Variablen
zuweisen und dies auch mit einer zweiten Matrix wiederholen.

Mit einen vorgegbenen Range sieht das so aus:


Sub Bsp()
Dim Matrix as Range
set Matrix = ActiveSheets("Tabelle1").Range("A1:B2")
End Sub



Wie geht das aber nun mit einem von mir markierten Zellbereich?

Problem 2:
Wenn Problem 1 gelöst ist möchte ich mit den beiden in den jeweiligen Variablen gespeicherten Matrizen
rechnen (Bsp: Matrix1*Matrix2) und die Lösung in einen von mir markierten Bereich der Tabelle schreiben.
Wie geht das?

Problem 3:
Wie kann ich eine Worksheet.Function auf eine einzelne Spalte oder Zeile meiner Matrix anwenden, um z.B. den Mittelwert der Spalte auszurechnen?

Für eure Unterstützung wäre ich dankbar

mfg

Tommy

  

Betrifft: AW: Zelbereiche(Matrizen) an Variablen zuweisen von: Erich G.
Geschrieben am: 04.07.2008 20:20:53

Hallo Tommy,
schau dir das mal an:

Option Explicit

Sub test()
   Dim rngA As Range, rngB As Range, rngC As Range
   Dim AWF As WorksheetFunction
   Set AWF = Application.WorksheetFunction

   Range("C5:E9").Select         ' hier nur zum Test
   Set rngA = Selection
   rngA.Interior.ColorIndex = 38
   
   Range("G2:K4").Select         ' manuell markiert
   Set rngB = Selection
   rngB.Interior.ColorIndex = 35
   
   Range("E12:I16").Select       ' manuell markiert
   Set rngC = Selection
   rngC.Interior.ColorIndex = 34
   
   rngC = AWF.MMult(rngA, rngB)

   Cells(12, 3) = AWF.Average(rngC.Columns(2))
End Sub

Und hier die Mappe mit ein paar Beispieldaten: https://www.herber.de/bbs/user/53608.xls

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort


  

Betrifft: AW: Zelbereiche(Matrizen) an Variablen zuweisen von: tommy
Geschrieben am: 04.07.2008 21:15:19

Danke,das hat mir super geholfen und mir auf die Sprünge geholfen, was ich eigentlich
wollte.Nämlich eine Funktion (eigentlich wie MMult), statt einen Sub.
Doch leider spuckt sie nichts aus. Was hab ich denn nun falsch gemacht?:


Function MatrixMult(rnga As Range, rngb As Range) As Range
Dim AWF As WorksheetFunction

Set AWF = Application.WorksheetFunction

MatrixMult = AWF.MMult(rnga, rngb)
'Ausgabebereich

End Function



(Hintergrund: Ich brauche die Source für ein UserForm)


  

Betrifft: AW: Zelbereiche(Matrizen) an Variablen zuweisen von: Erich G.
Geschrieben am: 04.07.2008 21:29:09

Hallo Tommy,
da geht was durcheinander.

AWF.MMult(...) liefert ein Array aus Zahlen zurück - das hat mit einem Range oder einem Tabellenblatt nix zu tun.

Mit MatrixMult(rnga As Range, rngb As Range) As Range
sagst du, dass die Funktion ein Range zurückgeben soll.

Du weist der (Ergebnis-)Variablen MatrixMult aber ein Array aus Zahlen zu, kein Range.

Was soll die Funktion denn tun?
Soll sie das Ergebnis in einen Bereich rngC schreiben?
Dann würde ich rngC als 3. Parameter mitgeben und das Ganmze nicht als Funktion,
sondern als S u b schreiben.

Oder soll sie ein Array aus Zahlen zurückgeben?
Dann muss der Aufrufer das Array auch richtig empfangen.

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort


  

Betrifft: AW: Zelbereiche(Matrizen) an Variablen zuweisen von: tommy
Geschrieben am: 04.07.2008 22:00:17

Sie funktioniert. Na klar, ich durfte MatrixMult nicht als Range deklarieren.


Function MatrixMult(rnga As Range, rngb As Range)

Dim AWF As WorksheetFunction

Set AWF = Application.WorksheetFunction

MatrixMult = AWF.MMult(rnga, rngb)

'Ausgabebereich

End Function



Jetzt muss ich nur noch eine Prüfanweisung basteln, dass wenn
Spaltenvektor Matrixa1<>ZeilenvektorMatrix2, eine Meldung erscheint, dass die Rechnung nicht ausgeführt werden kann.
Trotzdem Vielen Dank an dieser Stelle, für die schnelle Unterstützung.


  

Betrifft: Kann wohl zu (owT) von: Erich G.
Geschrieben am: 10.07.2008 21:59:41




 

Beiträge aus den Excel-Beispielen zum Thema "Zelbereiche(Matrizen) an Variablen zuweisen "