Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA Matrix invertieren und transpornieren
#1
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!
Antworten Top
#2
Hi,

(18.07.2016, 10: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:
  • Kaka
Antworten Top
#3
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 ....?
Antworten Top
#4
Hallöchen,

ja, genau so.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#5
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
Antworten Top
#6
(18.07.2016, 17:57)snb schrieb: Man braucht kein Array:
Das haben wir schon in anderen Antworten gesehen Smile
(18.07.2016, 17: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)
Antworten Top
#7
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. ????
Antworten Top
#8
(18.07.2016, 18: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:
  • Kaka
Antworten Top
#9
(18.07.2016, 18: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)
Antworten Top
#10
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)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste