gibt es per VBA eine Möglichkeit, in einem Array Zeilen und Spalten zu
vertauschen (wie beim Kopieren mit der "Transponier"-Funktion)?
Kann man eventuell auch das erste gegen das letzte Element vertauschen (also
nicht wie oben diagonal spiegeln, sondern vertikal pder horizontal)?
Für Hinweise wäre ich dankbar!
Markus
Hi Markus,
beim Transponieren ändern sich die Dimensionen des Arrays (wenn es nicht ein
nXn Array ist). Aber trotzdem kannst Du das natürlich in einer Schleife
umkopieren. Wenn Du also ein nXm Array hast infach ein neues Array mXn
anlegen und die Schleife verschachtelt über Zeilen und Spalten laufen
lassen. Dann kannst Du in dem neuen Array Spalten und zeilen zuweisen und Du
erhälst eine Transponierung.
Die Spiegelung ist natürlich auch möglich (ich habe mal das grundgerüst
skizziert:
for i = 1 to ende
puffer = a[i]
' swap
a[i]=a[Ende+1-i]
a[Ende+1-i] = puffer
next i
hth,
Stephan
Trotzdem vielen Dank erstmal !!!
Markus
"Stephan Kassanke" <ka...@upb.de> schrieb im Newsbeitrag
news:b6kbi3$58a$1...@news.uni-paderborn.de...
Das geht schon, indem Du die Werte vom Ausgangsarray in ein Zielarray
schreibst:
Public Function ArraySpiegelnV(Arr As Variant) As Variant
'Spiegelt Arr an der vertikalen Achse
Dim n As Long, m As Long
Dim ArrOut As Variant
ArrOut = Arr 'statt Redim-Anweisung
For n = 1 To UBound(Arr, 1)
For m = 1 To UBound(Arr, 2)
ArrOut(n, m) = Arr(n, UBound(Arr, 2) - m + 1)
Next
Next
ArraySpiegelnV = ArrOut
End Function
Public Sub Test()
Dim ArrIn As Variant, ArrOut As Variant
ArrIn = Sheets("Tabelle1").Range("A1:D3").Value
ArrOut = ArraySpiegelnV(ArrIn)
Sheets("Tabelle1").Range("A4:D6").Value = ArrOut
End Sub
Gruss Reimund
"Markus Eckel" <Markus...@Nexgo.de> schrieb im Newsbeitrag
news:#MJDJ0r#CHA....@TK2MSFTNGP10.phx.gbl...
Trotzdem Danke
Markus
"Reimund Lebeis" <re...@onlinehome.de> schrieb im Newsbeitrag
news:dAija.74$Ew.76...@news.odn.de...
Hallo Markus,
ok, wenn es um so viele Werte geht ist das natürlich ein
Geschwindigkeitsproblem. Mir ist jetzt keine Funktion in Excel (die man auch
ansprechen kann) bekannt, die das erledigt. Da könntest Du höchstens noch
auf eine in C/C++ geschriebene DLL bzw. XLL ausweichen.
Ich war mal so frei google zu bemühen und vielleicht hilft dir der folgende
Link da ja weiter:
Installing your own matrix class
... to pass the nested matrix object to the transpose algorithm ... to open
the built add-in
file MtxAdapt1.xll in the ... press Ctrl+Shift+Enter to create an array
formula ...
www.as-ltd.co.uk/xllplus-online/ howto_matrix_adapter.htm - 15k - Cached -
Similar pages
Gruß,
Stephan