Registriert seit: 16.07.2016
Version(en): 2007
Wer weiß mit welchem Befehl die Matrix in VBA invertiert und transponiert werden kann oder muss dies mit Hilfe von Schleifen selbst konstruiert werden?
Danke!
Registriert seit: 10.04.2014
Version(en): 2016 + 365
18.07.2016, 13:34
(Dieser Beitrag wurde zuletzt bearbeitet: 18.07.2016, 13:34 von Rabe.)
Hi, (18.07.2016, 11:28)Kaka schrieb: Wer weiß mit welchem Befehl die Matrix in VBA invertiert und transponiert werden kann oder muss dies mit Hilfe von Schleifen selbst konstruiert werden? transponieren geht vielleicht so: Code: Sub Transponiere() Sheets("Tabelle1").Range("A1:D5").Copy Sheets("Tabelle2").Range("A1").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True End Sub
oder kürzer: Code: Sub Transponiere() Sheets("Tabelle1").Range("A1:A5").Copy Sheets("Tabelle2").Range("A1").PasteSpecial Transpose:=True End Sub
Folgende(r) 1 Nutzer sagt Danke an Rabe für diesen Beitrag:1 Nutzer sagt Danke an Rabe für diesen Beitrag 28
• Kaka
Registriert seit: 16.07.2016
Version(en): 2007
18.07.2016, 13:54
(Dieser Beitrag wurde zuletzt bearbeitet: 18.07.2016, 13:54 von Kaka.)
Danke, weißt du wie man den Angegebenen Bereich, z.B. ("A1:B10") in einen Array packen kann? Die Frage bezieht sich darauf, wie der Array dann definiert werden muss?
Dim array1 ....?
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
ja, genau so.
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 29.09.2015
Version(en): 2030,5
18.07.2016, 18:57
(Dieser Beitrag wurde zuletzt bearbeitet: 18.07.2016, 18:57 von snb.)
Man braucht kein Array: Code: Sub M_snb() Sheet2.Cells(1).Resize(, 5) = Application.Transpose(Sheet1.Range("A1:A5")) End Sub
Wenn unvermeidlich: Code: Sub M_snb() sn = Sheet1.Range("A1:A5") Sheet2.Cells(1).Resize(UBound(sn, 2), UBound(sn)) = Application.Transpose(sn) End Sub
2-dimensionale Range: Code: Sub M_snb_002() Sheet2.Cells(1).Resize(2, 5) = Application.Transpose(Sheet1.Range("A1:B5")) End Sub
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
18.07.2016, 18:59
(Dieser Beitrag wurde zuletzt bearbeitet: 18.07.2016, 19:00 von schauan.)
(18.07.2016, 18:57)snb schrieb: Man braucht kein Array: Das haben wir schon in anderen Antworten gesehen  (18.07.2016, 18:57)snb schrieb: Wenn unvermeidlich:
Code: Sub M_snb() sn = Sheet1.Range("A1:A5") Sheet2.Cells(1).Resize(UBound(sn, 2), UBound(sn)) = Application.Transpose(sn) End Sub
Ja, die Frage war aber, wie man so ein Zellarray dimensioniert ...
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 16.07.2016
Version(en): 2007
Ich defeniere es etwas genauer. Ich will einen Array definieren und den Markierten Bereich in diesem Array abspeichern, um damit anschließend Matrix rechenschritte durchzuführen, multiplikation, transponieren, invertieren, usw. ????
Registriert seit: 12.04.2014
Version(en): Office 365
(18.07.2016, 19:46)Kaka schrieb: um damit anschließend Matrix rechenschritte durchzuführen, multiplikation, transponieren, invertieren, usw. ???? mmult(), transpose() und minverse().
Wir sehen uns! ... Detlef
Meine Beiträge können Ironie oder Sarkasmus enthalten.
Folgende(r) 1 Nutzer sagt Danke an shift-del für diesen Beitrag:1 Nutzer sagt Danke an shift-del für diesen Beitrag 28
• Kaka
Registriert seit: 16.07.2016
Version(en): 2007
(18.07.2016, 19:52)shift-del schrieb: mmult(), transpose() und minverse(). Danke für die Antwort. Nehmen wir an: Ich will zwei Array multiplizieren, welche beide kommazahlen enthalten, dann wäre es so? Code: Dim array1[] As Double Dim array2[] As Double Dim array3[] As Double
array1=.Range("A1:A5") array2=.Range("B1:B5")
array3=mmult(array1,array2)
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
bei einem Bereich nimmt man keine Klammern bei der Dimensionierung - das hattest Du weiter oben doch richtig geschrieben und ich habe es Dir bestätigt. Eckige Klammern gehören übrigens auch bei anderen Arrays nicht dort hin.
.Range funktioniert auch nur dann, wenn irgendwo noch ein passendes With dazu steht.
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
|