Clever-Excel-Forum

Normale Version: Matrixtransformation für Excel gesucht
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo liebe VBA Gemeinde,

ich habe ein Objekt vbObj1 welches einen Excel-Zellenbereich mit n x m Zellen repräsentiert.

Mit einem zweiten Objekt vbObj2 möchte ich die Daten aus vbObj1 übernehmen. Es soll
also gelten vbObj2 = vbObj1. Aber vbObj2 soll nur jedes 2. Element von n aus dem Zellenbereich von
dem ursprünglichen n x m Zellenbereich aus vbObj1 übernehmen. Der Bereich von m bleibt
unangetastet.

Wie mache ich das?
Hallo Sonja,

stelle uns bitte eine Beispieltabelle vor, in der du markierst, was du aus Arbeitsblatt1 in Arbeitsblatt2 oder in eine neue Tabelle kopiert haben möchtest. So wird dein Anliegen klarer.
Hallo Sonja,

was genau sind vbObj1 und vbObj2 für Variablentypen?

Gruß Uwe
Hallo Uwe,

ich würde sagen wir deklarieren sie als Variant, damit wird in Excel ja fast jeder Zellinhalt einer Zelle abgedeckt.
Hallo Sonja,

meinst Du sowas?

Code:
Sub aaa()
  Dim varObj1 As Variant
  Dim varobj2 As Variant
  Dim i As Long, j As Long, k As Long
  
  varObj1 = Range("A1:B11").Value
  ReDim varobj2(1 To (UBound(varObj1, 1) / 2) + UBound(varObj1, 1) Mod 2, 1 To UBound(varObj1, 2))
  
  For i = 2 To UBound(varObj1, 1) Step 2
    k = k + 1
    For j = 1 To UBound(varObj1, 2)
      varobj2(k, j) = varObj1(i, j)
    Next j
  Next i
  
  Range("D1").Resize(UBound(varobj2, 1), UBound(varobj2, 2)).Value = varobj2
End Sub

Gruß Uwe
Hallo Uwe,

genau das was ich meinte. Vielen Dank für die Super-Profi Lösung!