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.

Spalten und Zeilen per VBA vertauschen
#1
Moin,

ich hab ein kleines Problem und ich hoffe ihr könnt mir da weiterhelfen. 

Ich habe eine Datei (siehe Datei Excel1
.xlsx   Excel1.xlsx (Größe: 10,4 KB / Downloads: 9) ). Bei dieser können die Werte bis tausend und höher nach unten gehen bzw. sich fortsetzten.
Nun würde ich gerne das nach dem Klick auf einen CommandoButton die Datei wie folgt aussieht (Excel2
.xlsx   Excel2.xlsx (Größe: 10,42 KB / Downloads: 5) ).

Wie das ganze bei wenigen Zeilen funktioniert weis ich bzw. hatte ich schon umgesetzt über Range Cut und Copy. Da es sich allerdings nachher um wesentlich mehr Bereiche handelt, kann ich das so nicht fortsetzten.

Ich hoffe ihr könnt mir da weiterhelfen.



Schöne Grüße

Thorsten
Antworten Top
#2
Hallo Thorsten,

im Augenblick verstehe ich nicht so ganz den Sinn von Excel1.  Ist eine Auflistung so wie ich sie zeige nicht sinnvoller???
Anbei die Beispieldatei mit einem funktionierenden Makro zurück.  Die Spaltenbreite A-D kann variabel eingestellt werden.

mfg  Gast 123
Antworten Top
#3
Hallo Thorsten

eine Version von mir:
Code:
Option Explicit

Private Sub cbTuwat_Click()
Dim lngZL As Long
Dim lngZA As Long
Dim lngSL As Long
Dim varListe As Variant
Dim varAusgabe() As Variant

ThisWorkbook.Names("Ausgabe").RefersToRange.CurrentRegion = ""
varListe = ThisWorkbook.Names("Liste").RefersToRange.CurrentRegion.Value
ReDim varAusgabe(1 To UBound(varListe, 1) * UBound(varListe, 2) / 2, 1 To 2)
lngZA = 0
For lngZL = 1 To UBound(varListe, 1) - 1 Step 2
    For lngSL = 1 To UBound(varListe, 2)
        lngZA = lngZA + 1
        varAusgabe(lngZA, 1) = varListe(lngZL, lngSL)
        varAusgabe(lngZA, 2) = varListe(lngZL + 1, lngSL)
    Next lngSL
Next lngZL

ThisWorkbook.Names("Ausgabe").RefersToRange.Resize(UBound(varAusgabe, 1), 2) = varAusgabe
End Sub


Angehängte Dateien
.xlsm   Kopie von Excel1.xlsm (Größe: 22,19 KB / Downloads: 1)
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





Antworten Top
#4
Ich danke für die Antwort, hat geklappt.

Lg

Thorsten


Eintrag geschlossen
Antworten Top


Gehe zu:


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