Matrixtransformation für Excel gesucht
#1
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?
Top
#2
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.
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Top
#3
Hallo Sonja,

was genau sind vbObj1 und vbObj2 für Variablentypen?

Gruß Uwe
Top
#4
Hallo Uwe,

ich würde sagen wir deklarieren sie als Variant, damit wird in Excel ja fast jeder Zellinhalt einer Zelle abgedeckt.
Top
#5
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
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • SonjaFido
Top
#6
Hallo Uwe,

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


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste