transponieren, löschen per vba
#1
Hallo zusammen

Ich würde es schätzen, wenn ihr mir erneut helfen könntet!
Meine Tabelle muss wie folgt transponiert werden:

Die Werte aus der Spalte Q (Bereich Q3:Q10) transponieren nach R2:Y2.
Danach Zeilen 3:10 löschen.

Danach eine Schlaufe bis zum letzten Eintrag (unterschiedlich viele Zeilen, nicht fix). Das heisst...
Q4:Q11 nach R3:Y3 transponieren
Zeilen 4:11 löschen

Q5:Q12 nach R4:Y4 transponieren
Zeilen 5:12 löschen

Der zu transponierende Block umfasst immer 8 Werte/Zeilen.
usw.

Vorher

Tabelle1

QRSTUVWXY
1EintragMeta1Meta1_RefMeta2Meta2_RefMeta3Meta3_RefBemLabel
21
3Meta1
4Meta1_Ref
5Meta2
6Meta2_Ref
7Meta3
8Meta3_Ref
9Bem
10Label
112
12Meta1
13Meta1_Ref
14Meta2
15Meta2_Ref
16Meta3
17Meta3_Ref
18Bem
19Label
203
21Meta1
22Meta1_Ref
23Meta2
24Meta2_Ref
25Meta3
26Meta3_Ref
27Bem
28Label

Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8


Nachher


Tabelle1

QRSTUVWXY
1EintragMeta1Meta1_RefMeta2Meta2_RefMeta3Meta3_RefBemLabel
21Meta1Meta1_RefMeta2Meta2_RefMeta3Meta3_RefBemLabel
32Meta1Meta1_RefMeta2Meta2_RefMeta3Meta3_RefBemLabel
43Meta1Meta1_RefMeta2Meta2_RefMeta3Meta3_RefBemLabel

Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8


Wie geht das mit vba?
Die Transponierung von unten nach oben durchlaufen lassen?

Danke für die tolle Hilfe!

Liebe Grüsse
Urs - Office 2010
Top
#2
Hi

so habe ich es getestet

Code:
Sub test()
   Dim lngZiel As Long
   Do
       lngZiel = Cells(Rows.Count, 18).End(xlUp).Row + 1
       Cells(lngZiel + 1, 17).Resize(8, 1).Copy
       Cells(lngZiel, 18).PasteSpecial Paste:=xlPasteAll, Transpose:=True
       Cells(lngZiel + 1, 1).Resize(8, 1).EntireRow.Delete
   Loop While Cells(lngZiel + 1, 17) <> ""
End Sub
MfG Tom
Top
#3
Lieber Tom

Das ist suuuper Thumbsupsmileyanim
Merci für den Code!

Wünsche dir und allen ein sonniges Weekende.

Mfg - Urs
Top
#4
Moin!
Sowas ist auch problemlos mit einfachen Formeln lösbar.
Erst gestern habe ich für ein ähnliches Problem eine Lösung erstellt:
http://www.clever-excel-forum.de/thread-...l#pid47946

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#5
Hi

hier deine gewünschte Ergänzung

Code:
Sub test()
   Dim lngZiel As Long
   Do
       lngZiel = Cells(Rows.Count, 18).End(xlUp).Row + 1
       If Cells(lngZiel, 17).Value = "xyz" Then
           Cells(lngZiel, 1).Resize(9, 1).EntireRow.Delete
       Else
           Cells(lngZiel + 1, 17).Resize(8, 1).Copy
           Cells(lngZiel, 18).PasteSpecial Paste:=xlPasteAll, Transpose:=True
           Cells(lngZiel + 1, 1).Resize(8, 1).EntireRow.Delete
       End If
   Loop While Cells(lngZiel + 1, 17) <> ""
End Sub
ich habe dir mal meine Testdatei angehangen
ich hoffe ich habe deine Zielvorstellung richtig verstanden

MfG Tom


Angehängte Dateien
.xlsm   Dude85.xlsm (Größe: 21,64 KB / Downloads: 1)
Top
#6
Hi Tom

Ja, funktioniert super!
Ich danke dir herzlichst für den Support - klasse!

Gruss
Urs

PS: auch Ralf für den Hinweis mit der Formel Smile
Top


Gehe zu:


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