Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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?
Antworten 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)
Antworten Top
#3
Hallo Sonja,

was genau sind vbObj1 und vbObj2 für Variablentypen?

Gruß Uwe
Antworten Top
#4
Hallo Uwe,

ich würde sagen wir deklarieren sie als Variant, damit wird in Excel ja fast jeder Zellinhalt einer Zelle abgedeckt.
Antworten 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
Antworten Top
#6
Hallo Uwe,

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


Gehe zu:


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