AW: Worksheetfunction.TRANSPOSE
04.09.2005 00:20:33
IngGi
Hallo Rolf,
die Modifikation findet doch aber schon vorher, beim Auslesen von arr() nach B() statt. Und am Schluss wird B() dann nach ShortArray() ?berschrieben und dabei transponiert. Dieser letzte Schritt, der in deinem Code per Worksheet-Function passiert, ist dann ja schon eine 1:1-Umsetzung. Mein Code war nat?rlich nur als Ersatz f?r diese letzte Programmzeile, und auch nur als noch anzupassendes Beispiel, gedacht.
K?nnte folgendes nicht funktionieren? Habe ich vielleicht etwas falsch verstanden?
Function ShortArray(ByVal arr As Variant) As Variant
Dim B()
Dim AUSG()
Dim ze As Long, sp As Long
Dim i As Long, k As Long
For i = 1 To UBound(arr)
If arr(i, 3) = "x" Then
k = k + 1
ReDim Preserve B(3, k)
B(1, k) = arr(i, 1)
B(2, k) = arr(i, 2)
B(3, k) = ""
End If
Next
ReDim AUSG(UBound(B, 2), UBound(B, 1))
For ze = 1 To UBound(AUSG, 1)
For sp = 1 To UBound(AUSG, 2)
AUSG(ze, sp) = B(sp, ze)
Next 'sp
Next 'ze
ShortArray = AUSG()
End Function
Noch eine Anmerkung, die ich bei meiner vorigen Antwort ?bersehen habe: Die Dimensionierung von AUSG() mit UBound() setzt voraus, dass Option Base 1 gesetzt, bzw. LBound immer =1 ist. Sonst musst du das eventuell noch anpassen.
Gru? Ingolf