Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
660to664
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
660to664
660to664
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Worksheetfunction.TRANSPOSE

AW: Worksheetfunction.TRANSPOSE
03.09.2005 23:34:13
Nepumuk
Hallo Rolf,
5.461 Elemente sind maximal drin.
Gru?
Nepumuk
Excel & VBA ? Beispiele

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Worksheetfunction.TRANSPOSE
03.09.2005 23:43:05
Rolf
Hallo Nepumuk,
so weit, so schlecht -
aber jetzt weiss ich's wenigstens.
Danke f?r deine Antwort,
auf die ich jetzt 'ne Friedenspfeife rauche.
LG
Rolf
AW: Worksheetfunction.TRANSPOSE
03.09.2005 23:41:42
IngGi
Hallo Rolf,
ein Datenfeld l??t sich auch so transponieren:

ReDim AUSG(UBound(EING, 2), UBound(EING, 1))
For ze = 1 To UBound(AUSG, 1)
For sp = 1 To UBound(AUSG, 2)
AUSG(ze, sp) = EING(sp, ze)
Next 'sp
Next 'ze
Gru? Ingolf
AW: Worksheetfunction.TRANSPOSE
03.09.2005 23:51:50
Rolf
Hallo Ingolf,
ist ja keine 1:1 Umsetzung,
sondern das Eingangsarray wird modifiziert
und die Ausdehnung erst im Rahmen der Modifikation,
deshalb Redim Preserve, erkannt.
Dank dir trotzdem zu n?chtlicher Stunde
Rolf
Anzeige
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
Anzeige
AW: Worksheetfunction.TRANSPOSE
04.09.2005 08:37:45
Rolf
Guten Morgen Ingolf,
vielen Dank, klappt, wie's soll -
das Unverst?ndnis lag ganz bei mir.
F?r ca. 20.000 S?tze braucht's bei mir 30 Sec.
Herzliche Gr??e
Rolf (jetzt f?r 1 Woche weg)
Nachtrag zum Thema LIKE/INSTR/Regular Expressions:
den besten Durchsatz habe ich mit letzteren erzielt
AW: Worksheetfunction.TRANSPOSE
03.09.2005 23:34:13
Nepumuk
Hallo Rolf,
5.461 Elemente sind maximal drin.
Gru?
Nepumuk
Excel & VBA ? Beispiele
AW: Worksheetfunction.TRANSPOSE
03.09.2005 23:43:05
Rolf
Hallo Nepumuk,
so weit, so schlecht -
aber jetzt weiss ich's wenigstens.
Danke f?r deine Antwort,
auf die ich jetzt 'ne Friedenspfeife rauche.
LG
Rolf
Anzeige
AW: Worksheetfunction.TRANSPOSE
03.09.2005 23:41:42
IngGi
Hallo Rolf,
ein Datenfeld l??t sich auch so transponieren:

ReDim AUSG(UBound(EING, 2), UBound(EING, 1))
For ze = 1 To UBound(AUSG, 1)
For sp = 1 To UBound(AUSG, 2)
AUSG(ze, sp) = EING(sp, ze)
Next 'sp
Next 'ze
Gru? Ingolf
AW: Worksheetfunction.TRANSPOSE
03.09.2005 23:51:50
Rolf
Hallo Ingolf,
ist ja keine 1:1 Umsetzung,
sondern das Eingangsarray wird modifiziert
und die Ausdehnung erst im Rahmen der Modifikation,
deshalb Redim Preserve, erkannt.
Dank dir trotzdem zu n?chtlicher Stunde
Rolf
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
Anzeige
AW: Worksheetfunction.TRANSPOSE
04.09.2005 08:37:45
Rolf
Guten Morgen Ingolf,
vielen Dank, klappt, wie's soll -
das Unverst?ndnis lag ganz bei mir.
F?r ca. 20.000 S?tze braucht's bei mir 30 Sec.
Herzliche Gr??e
Rolf (jetzt f?r 1 Woche weg)
Nachtrag zum Thema LIKE/INSTR/Regular Expressions:
den besten Durchsatz habe ich mit letzteren erzielt

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige