Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1604to1608
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Transponieren

VBA Transponieren
26.01.2018 16:58:35
Pusterhofer
Hallo,
ich hätte eine Frage zum Transponieren mit VBA und gehofft mir kann hier geholfen werden. Ich versuche eine Spalte aus einer anderen Excel Datei zu kopieren und transponieren. Dabei besteht die Excel, aus der ich kopieren will, aus mehreren Blättern und mich interessiert immer die gleiche Spalte aus den Blättern 11-19. Wäre über jede Hilfe sehr dankbar.
Mein Ansatz bisher, doch ich bekomme immer eine Fehlermeldugn beim Transponierbefehl:
Sub Projekt()
Dim wsZiel As Worksheet
Dim wsQuelle As Worksheet
Set wsZiel = ActiveWorkbook.ActiveSheet
Set wsQuelle = Workbooks.Open(Filename:="C:\probe.xls").Worksheets("FFT CH1")
wsQuelle.Activate
For A = 11 To 19
Worksheets(A).Range("C2:C3202").Copy
Application.CutCopyMode = False
wsZiel.Activate
wsZiel.Range("D3").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Next A
wsQuelle.Parent.Close
Set wsQuelle = Nothing
Set wsZiel = Nothing
End Sub

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Transponieren
26.01.2018 17:21:50
Hajo_Zi
wenn Du
Application.CutCopyMode = False machst ist speicher gelöscht, oder sehe ich das falsch?
Select, Activate usw. ist in VBA zu 99,8% nicht notwendig.
Der Cursor ist kein Hund der überall rumgeführt werden muss.
Hinweise zu select usw. Hajo-Excel.de
Hinweise zu select usw. Online-Excel.de
Hinweise zu select usw. Online-Excel.de
Der Cursor ist kein Hund, der überall rum geführt werden muss.

Ich gebe keinen Dank für eine Rückmeldung, da ich durch solche Beiträge nicht meine Beitragszahl erhöhen muss.
Also ich schreibe keine Beiträge mit dem Betreff "Gerne u. Danke für die Rückmeldung....."
Rückmeldung ist ja in der Heutigen Zeit nicht üblich und die wenigen die eine Rückmeldung geben,
mögen mir das verzeihen, das kein Danke für eine Rückmeldung kommt.
Beiträge von Werner, Luc, robert und folgende lese ich nicht.
Anzeige
AW: VBA Transponieren
26.01.2018 17:55:55
Pusterhofer
Vielen Dank für die Antwort. Ohne Application.CutCopyMode = False kommt immer der Hinweis, dass im Zwischenspeicher eine große Datenmenge gespeichert ist!?
AW: VBA Transponieren
26.01.2018 17:58:39
Hajo_Zi
Du möchtest es also nicht an die richtige Stelle schreiben?
Nach einfügen?
Gruß Hajo
AW: VBA Transponieren
26.01.2018 18:03:25
Pusterhofer
Ich vermute ich kenn die richtige Stelle nicht :D!? Ich habe die Zeile jetzt unter den Transponierausdruck gestetzt und die erste Spalte wird mir transponiert ausgegeben, aber leider die Splaten der weiteren Blätter nicht.
AW: VBA Transponieren
26.01.2018 18:07:43
Werner
Hallo,
ich würde mal sagen, dass du immer nur den Datenbestand deines lezten Tabellenblattes im Zielblatt hast, weil du dir immer wieder die Zelle B3 im Zielblatt überschreibst.
Gruß Werner
Anzeige
AW: VBA Transponieren
26.01.2018 18:11:45
Pusterhofer
Hallo,
ich erhalte immer nur den Datenbestand des ersten Tabellenblattes. Stimmt, hätten sie eine Idee wie man den Befehl erteilen kann, dass automatisch eine Reihe darunter ausgegeben wird?
Grüße Michael
AW: VBA Transponieren
26.01.2018 18:15:43
Werner
Hallo,
da stellt sich dann gleich die nächste Frage:
Wird das Makro häufiger ausgeführt und wenn ja, was soll mit den Daten im Zielblatt passieren. Soll dann jeweils in Spalte B unten angefügt werden?
Übrigens sind wir im Forum per Du.
Gruß Werner
AW: VBA Transponieren
26.01.2018 18:23:37
Pusterhofer
Hallo
Das Makro wird für mehrere Excel Datein angewendet und es soll immer die gleiche Spalte, aus den Tabellenblettern, kopiert und in Reihen in der Zieldatei transformiert werden. Die Reihen versuche ich untereinander anzuordnen. Mit den Daten in der Zieldatei passiert nichts mehr - Die Datei wird für eine ISO Surface erstellung in Matlab benötigt.
Grüße Michael
Anzeige
Beispiel
26.01.2018 18:22:21
Werner
Hallo,
z.B. so:
Option Explicit
Sub Projekt()
Dim wsZiel As Worksheet, wsQuelle As Worksheet, a As Long, i As Long
Set wsZiel = ThisWorkbook.Worksheets("Tabelle1") 'Blattname anpassen
Set wsQuelle = Workbooks.Open(Filename:="C:\probe.xls").Worksheets("FFT CH1")
i = 3
With wsQuelle
For a = 11 To 19
.Worksheets(a).Range("C2:C3202").Copy
wsZiel.Range("D" & i).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Application.CutCopyMode = False
i = i + 1
Next a
End With
wsQuelle.Close False
Set wsQuelle = Nothing
Set wsZiel = Nothing
End Sub
Da wird aber beim nächsten Makrostart in der Zieltabelle wieder bei B3 begonnen - die Daten werden also überschrieben.
Gruß Werner
Anzeige
AW: Beispiel
26.01.2018 18:41:17
Pusterhofer
Vielen Dank, damit funktioniert es!!
Gerne u. Danke für die Rückmeldung. o.w.T.
26.01.2018 18:42:44
Werner
AW: Gerne u. Danke für die Rückmeldung. o.w.T.
27.01.2018 11:09:29
Pusterhofer
Ich hätte versucht das ganze noch zu erweitern, dass mehrere Datein (nur durch unterschiedliche Bezeichnung) ausgelesen werden. Das Makro fuktioniert auch soweit nur die Zeile:
wsZiel.Range("D3").End(xlDown).i = ActiveCell.Row
passt ihm nicht. Hätte damit versucht die letzte freie Zelle in der Spalte D zu ermitteln, damit es zu keiner überschreibung kommt. Wäre sehr dankbar wenn hierzu noch jemand eine Anmerkung hätte.
Sub Inet()
Dim wsZiel As Worksheet, wsQuelle As Worksheet, a As Long, i As Long
Set wsZiel = ThisWorkbook.Worksheets("SR")
For b = 1 To 9
Set wsQuelle = Workbooks.Open(Filename:="C:\20180109Float6UniGlasClassic_FFT_sr0" & b & " _
_Allgemein_.xls").Worksheets("FFT CH1")
wsZiel.Range("D3").End(xlDown).i = ActiveCell.Row
With wsQuelle
For a = 11 To 19
Worksheets(a).Range("C2:C3202").Copy
wsZiel.Range("D" & i).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Application.CutCopyMode = False
i = i + 1
wsQuelle.Parent.Close
Next a
End With
Next b
Set wsQuelle = Nothing
Set wsZiel = Nothing
End Sub

Anzeige
AW: Gerne u. Danke für die Rückmeldung. o.w.T.
27.01.2018 19:45:25
Werner
Hallo,
warum stellst du die letzte belegte bzs. die erste freie Zeile von oben nach unten fest? Sind unterhalb der Zeile in der die Daten eingefügt werden sollen noch weitere Daten vorhanden?
Wenn nein ist es einfacher/besser die erste freie Zeile von unten nach oben festzustellen.
Teste mal:
Sub Inet()
Dim wsZiel As Worksheet, wsQuelle As Worksheet, a As Long, loLetzte As Long
Set wsZiel = ThisWorkbook.Worksheets("SR")
For b = 1 To 9
Set wsQuelle = Workbooks.Open(Filename:="C:\" & _
"20180109Float6UniGlasClassic_FFT_sr0" & b & "_Allgemein_.xls").Worksheets("FFT CH1")
loLetzte = wsZiel.Cells(wsZiel.Rows.Count, 4).End(xlUp).Offset(1, 0).Row
If loLetzte 
Gruß Werner
Anzeige
AW: Gerne u. Danke für die Rückmeldung. o.w.T.
31.01.2018 12:26:38
Pusterhofer
Hallo Werner,
sorry für die Späte Antwort, funktioniert perfekt!
Vielen Dank und LG
Michi
AW: Gerne u. Danke für die Rückmeldung. o.w.T.
31.01.2018 20:37:07
Werner

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige