Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Problem bei Application.Transpose mit Array

Forumthread: Problem bei Application.Transpose mit Array

Problem bei Application.Transpose mit Array
27.11.2008 16:37:00
Martin
Hallo,
mit folgender Zeile transponiere ich die Daten eines Arrays in ein anderes Array:
myArr2 = Application.Transpose(myArr)
Normal klappt das auch ohne Probleme. Aber wenn das Quell-Array (in dem Fall "myArr") nur eine Dimension enthält, ist myArr2 nach der Transponierung mit myArr identisch.
Falls ich mich unklar ausgedrück haben sollte:
Wenn myArr folgende Werte enthält....
myArr(1, 1) = "1"
myArr(2, 1) = "2"
myArr(3, 1) = "3"
sollten in myArr2 nach der Application.Transpose die Werte so angeordnet sein:
myArr(1, 1) = "1"
myArr(1, 2) = "2"
myArr(1, 3) = "3"
Wer kann mir erklären weshalb Application.Transpose bei eindimensionalen Arrays nicht klappt oder wo mein Denkfehler liegt?
Vielen Dank im Voraus!
MfG
Martin
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Problem bei Application.Transpose mit Array
27.11.2008 16:45:40
Tino
Hallo,
wozu soll es gut sein ein eindimensionales Area zu Transponieren?
Gruß Tino
AW: Problem bei Application.Transpose mit Array
27.11.2008 16:53:00
Martin
Hallo,
das Array wird dynamisch gefüllt und enthält normal sehr viele Daten. Es kann aber auch vorkommen, dass nur 1 Datensatz in das Array übernommen wird. Genau dieser Fall ist gerade eingetreten.
MfG
Martin
Anzeige
AW: Problem bei Application.Transpose mit Array
27.11.2008 17:04:55
Tino
Hallo,
mach es mit einer Schleife wenn Transpose nicht geht.
Beispiel:

Dim meArea, meAreaT
Dim A As Long
meArea = Range("A1:A3")
If UBound(meArea, 2) = 1 Then
ReDim meAreaT(0, UBound(meArea) - 1)
For A = LBound(meArea) To UBound(meArea)
meAreaT(0, A - 1) = meArea(A, 1)
Next A
End If


Gruß Tino

Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Anwendung von Application.Transpose in Excel VBA


Schritt-für-Schritt-Anleitung

Um ein eindimensionales Array in Excel VBA mit Application.Transpose zu transponieren, solltest Du die folgenden Schritte befolgen:

  1. Array definieren: Erstelle ein eindimensionales Array und fülle es mit Werten.

    Dim myArr(1 To 3, 1 To 1) As Variant
    myArr(1, 1) = "1"
    myArr(2, 1) = "2"
    myArr(3, 1) = "3"
  2. Transponieren: Versuche, das Array mit Application.Transpose zu transponieren.

    Dim myArr2 As Variant
    myArr2 = Application.Transpose(myArr)
  3. Überprüfen: Beachte, dass myArr2 bei eindimensionalen Arrays identisch zu myArr bleibt. Um das gewünschte Ergebnis zu erzielen, kannst Du stattdessen eine Schleife verwenden.


Häufige Fehler und Lösungen

Ein häufiger Fehler beim Einsatz von Application.Transpose in VBA ist der Umgang mit eindimensionalen Arrays. Hier sind einige Lösungen:

  • Problem: Bei eindimensionalen Arrays bleibt das Ergebnis nach der Transponierung unverändert.
    • Lösung: Nutze eine Schleife, um die Werte manuell zu transponieren.

Beispiel:

Dim meArea As Variant, meAreaT() As Variant
Dim A As Long
meArea = Range("A1:A3").Value
If UBound(meArea, 2) = 1 Then
    ReDim meAreaT(1 To 1, 1 To UBound(meArea))
    For A = LBound(meArea) To UBound(meArea)
        meAreaT(1, A) = meArea(A, 1)
    Next A
End If

Alternative Methoden

Falls Application.Transpose nicht korrekt funktioniert, kannst Du folgende Alternativen in Betracht ziehen:

  1. WorksheetFunction.Transpose: Diese Methode funktioniert ähnlich, kann jedoch in bestimmten Fällen besser geeignet sein.

    myArr2 = Application.WorksheetFunction.Transpose(myArr)
  2. Schleifen: Wie bereits erwähnt, kannst Du mit einer Schleife die Werte manuell transponieren.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie Du Application.Transpose in verschiedenen Szenarien verwenden kannst:

  1. Transponieren eines Bereichs: Wenn Du Werte aus einem Arbeitsblatt transponieren möchtest:

    Dim rng As Range
    Set rng = Range("A1:A3")
    Dim transposedArray As Variant
    transposedArray = Application.Transpose(rng.Value)
  2. Transponieren eines Arrays mit dynamischen Werten: Wenn das Array dynamisch gefüllt wird, kannst Du eine ähnliche Logik wie oben verwenden.


Tipps für Profis

  • Vermeide unnötige Transponierungen: Prüfe immer die Dimensionen Deines Arrays, bevor Du versuchst, es zu transponieren.
  • Nutze die Excel-Formeln: In Excel selbst kannst Du die TRANSPOSE-Funktion verwenden, um Arrays direkt in Zellen zu transponieren.
  • Debugging: Verwende das Debugging-Tool, um den Inhalt Deiner Arrays während der Ausführung zu überprüfen.

FAQ: Häufige Fragen

1. Warum funktioniert Application.Transpose nicht mit eindimensionalen Arrays?
Die Application.Transpose-Methode gibt bei eindimensionalen Arrays das ursprüngliche Array zurück, anstatt es zu transponieren. Verwende stattdessen eine Schleife oder WorksheetFunction.Transpose.

2. Gibt es eine maximale Größe für das Array?
Ja, die maximale Größe eines Arrays in VBA ist durch den verfügbaren Speicher und die Limitationen von Excel begrenzt. Bei sehr großen Arrays kann es zu Problemen kommen.

3. Wie kann ich ein mehrdimensionales Array transponieren?
Ein mehrdimensionales Array kann direkt mit Application.Transpose transponiert werden, solange es keine eindimensionale Form hat.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige