Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
988to992
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
988to992
988to992
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zelbereiche(Matrizen) an Variablen zuweisen

Zelbereiche(Matrizen) an Variablen zuweisen
04.07.2008 19:50:43
tommy
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

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zelbereiche(Matrizen) an Variablen zuweisen
04.07.2008 20:20:00
Erich
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

Anzeige
AW: Zelbereiche(Matrizen) an Variablen zuweisen
04.07.2008 21:15:00
tommy
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)

AW: Zelbereiche(Matrizen) an Variablen zuweisen
04.07.2008 21:29:09
Erich
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

Anzeige
AW: Zelbereiche(Matrizen) an Variablen zuweisen
04.07.2008 22:00:00
tommy
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 Matrixa1ZeilenvektorMatrix2, eine Meldung erscheint, dass die Rechnung nicht ausgeführt werden kann.
Trotzdem Vielen Dank an dieser Stelle, für die schnelle Unterstützung.

Kann wohl zu (owT)
10.07.2008 21:59:00
Erich

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige