Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
988to992
988to992
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Datenfelden in Excel auf Seite schreiben.

Datenfelden in Excel auf Seite schreiben.
05.07.2008 21:53:00
Joachim
hi,
ich hätte da mal ne Frage: vielleicht kann sich der eine oder andere was vorstellen:
Ich habe eine Excelmappe mit Daten, sie sieht so ungefähr aus:
A_______B_______C________D______E
ID______Code____Phase____ME_____Bearbeiter
1_______37______RUN______34_____EW
2_______46______Build______28_____KT
3_______12______RUB_______54_____TR
usw.
Die Tabelle hat natürlich noch mehr Spalten und Zeilen. So, nun meine Frage:
ist es möglich , die Datensätze auf ein anderes Blatt zu bringen und anders angeortnet, zB.so:
1
37
RUN
34
EW
2
26
Build
28
KT
:
:
Dabei sollte jeder Datensatz auf ein eigenes Tabellenblatt
Schwierig, oder ?
Vielleicht hat ja jemand mal so was gemacht.
Danke mal
Joachim

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

Betreff
Datum
Anwender
Anzeige
Transponieren
05.07.2008 22:02:33
Matthias
Hallo
Userbild
Gruß Matthias

AW: Transponieren
05.07.2008 22:26:21
Joachim
Hi,
ich kenne diese Funktion, aber ich suche nach einem Makro
Gruss
Joachim

AW: Transponieren
07.07.2008 08:41:00
Jochen
Hallo Herby,
Dein Beispiel geht voll in meine Richtung, nur noch eine bzw zwei kleine Fragen:
kann man die Spaltenüberschrift mit in die einzelnen Blätter übernehmen damit aus :
5
454
fff
666
fz
so wird
ID_______5
Code_____454
Phase____RUN
ME_______666
Bearbeiter_TW
also dass die Kategorien in der Spalte A stehn und die dazugehörigen Infos in Spalte B
Die Schleife benennt die weiteren Blätter TABELLE2, TABELLE3, TABELLE4 ....
kann man den Blättern auch andere Namen geben , unabhängig vom Name des ersten Blattes:
zB: Vorgang1, Vorgang2, Vorgang3... (das erste Tebellenblatt TABELLE1 kann ruhig so bleiben)
Ansonsten echt super, danke
Gruss
Joachim

Anzeige
AW: Transponieren
07.07.2008 09:48:00
Erich
Hi Joachim,
probier mal

Option Explicit
Sub transp()
Dim lngC As Long, arrA, rng As Range, ii As Long
lngC = Cells(1, Columns.Count).End(xlToLeft).Column
arrA = Application.Transpose(Cells(1, 1).Resize(, lngC))
For Each rng In Cells(2, 1).Resize(Cells(Rows.Count, 1).End(xlUp).Row - 1)
ii = ii + 1
Worksheets.Add(after:=Sheets(Sheets.Count)).Name = "Vorgang" & ii
Cells(1, 1).Resize(lngC) = arrA
Cells(1, 2).Resize(lngC) = Application.Transpose(rng.Resize(, lngC))
Next rng
End Sub

Und hier die Mappe zum Spielen: https://www.herber.de/bbs/user/53630.xls
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Transponieren
07.07.2008 11:57:00
Joachim
Hi Erich,
kann es sein, dass es in der Zeile
Cells(1, 2).Resize(lngC) = Application.Transpose(rng.Resize(, lngC))
problem gibt , wenn der zellinhalt mehr als 255 Zeichen hat ?
Hatte am Anfang immer eine Fehlermeldung bekommen, bis ich heraus gefunden haben, wenn ich meine Datensätze auf 255 stutze (grösser 255 Zeiechen kann vorkommen) besteht das Problem nicht mehr
Gruss

AW: Transponieren
07.07.2008 13:11:31
Erich
Hi Joachim,
ja bei mehr als 255 Zeichen in einer Zelle gibts ein Problem beim Transponieren.
Versuchs mal hiermit:

Sub transp()
Dim lngC As Long, rngA As Range, rng As Range, ii As Long
lngC = Cells(1, Columns.Count).End(xlToLeft).Column
Set rngA = Cells(1, 1).Resize(, lngC)
For Each rng In Cells(2, 1).Resize(Cells(Rows.Count, 1).End(xlUp).Row - 1)
ii = ii + 1
Worksheets.Add(after:=Sheets(Sheets.Count)).Name = "Vorgang" & ii
rngA.Copy
Cells(1, 1).PasteSpecial xlPasteAll, Transpose:=True
rng.Resize(, lngC).Copy
Cells(1, 2).PasteSpecial xlPasteAll, Transpose:=True
Cells(1, 2).Select
Next rng
Application.CutCopyMode = False
End Sub

Wenn nur Werte übertragen werden sollen, kannst du
statt xlPasteAll besser xlPasteValues verwenden.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Transponieren
07.07.2008 14:00:02
Joachim
Hi Erich,
jetzt funktionierts, spitze.
was ist denn nun anders ?
Gruss
Joachim

AW: Transponieren
07.07.2008 16:20:35
Erich
Hi Joachim,
deine Frage kann ich nicht so recht verstehen. Hast du die beiden Codes denn nicht verglichen?
Dann siehst du gleich, in welchen Zeilen sie sich unterscheiden.
Sind dir hier verwendete Befehle (Methoden, Eigenschaften, ...) nicht klar?
Dann schau doch bitte erst einmal in die VBA-Hilfe.
Wenn du dann noch Fragen zum Code hast, will ich sie dir gern beantworten.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

AW: Transponieren
11.07.2008 09:46:55
Joachim
Hallo Erich,
kan ich Dich wegen Deinem Beispiel noch mal was Fragen ?
Gruss
Joachim

Anzeige
AW: Na klar! (owT)
11.07.2008 09:59:00
Erich

AW: Na klar! (owT)
11.07.2008 12:32:00
Joachim
Danke,
also, Du kannst Dich doch sicher noch an Dein Beispiel erinnern, wo die Datensätze von Queerformat in Längsformat auf jeweils ein Scheet pro datensatz) geschrieben wurden:

Sub transponieren()
Dim lngC As Long, rngA As Range, rng As Range, ii As Long
lngC = Cells(1, Columns.Count).End(xlToLeft).Column
Set rngA = Cells(1, 1).Resize(, lngC)
For Each rng In Cells(2, 1).Resize(Cells(Rows.Count, 1).End(xlUp).Row - 1)
ii = ii + 1
Worksheets.Add(After:=Sheets(Sheets.Count)).Name = "Vorgang " & ii
rngA.Copy
Cells(1, 1).PasteSpecial xlPasteAll, Transpose:=True
rng.Resize(, lngC).Copy
Cells(1, 2).PasteSpecial xlPasteAll, Transpose:=True
Cells(1, 2).Select
Next rng
Application.CutCopyMode = False
End Sub


Bevor ich nun ausführlich dauf eingehe, vorab die Frage: wäre es möglich, wenn ich in meine bestehende Mappe sozusagen ein Template einzufügen, (wo schon die ganzen Formatierungen drauf sind), dass sich der Code, bevor er ein neues Sheet anlegt, sich praktisch das Template als Vorlage holt, die Daten da reinkopiert und als neues Sheet ("Vorgang 01") abspeichert. Sich für den nächsten Datensatz wieder das Template holt und die nächsten daten abspeichert..u.s.w
Ich hoffe Du verstehtst, was ich meine.
Wenn Du die Frage mit Ja beantworten kannst, schreibe ich Dir genau, um was es geht.
Gruss
Joachim

Anzeige
AW: Transponiert in Muster kopieren
11.07.2008 13:28:00
Erich
Hi Joachim,
in der Mappe muss es jetzt ein Blatt "Muster" geben. Probier mal das:

Option Explicit
Sub transp()
Dim lngC As Long, rngA As Range, rng As Range, ii As Long
lngC = Cells(1, Columns.Count).End(xlToLeft).Column
Set rngA = Cells(1, 1).Resize(, lngC)
For Each rng In Cells(2, 1).Resize(Cells(Rows.Count, 1).End(xlUp).Row - 1)
ii = ii + 1
Worksheets("Muster").Copy after:=Sheets(Sheets.Count)
ActiveSheet.Name = "Vorgang" & Format(ii, " 00")
rngA.Copy
Cells(1, 1).PasteSpecial xlPasteValues, Transpose:=True
rng.Resize(, lngC).Copy
Cells(1, 2).PasteSpecial xlPasteValues, Transpose:=True
Cells(1, 2).Select
Next rng
Application.CutCopyMode = False
End Sub

Das kannst du auch in dieser Mappe ausprobieren: https://www.herber.de/bbs/user/53753.xls
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Transponiert in Muster kopieren
11.07.2008 13:55:57
Joachim
Hallo Erich,
Hui, das geht ja prima. Ich wollte Dir aber noch kurz was erklären, auf was ich hinaus wollte:
das mit dem Mitnehmen der Vorlage aus dem Muster-Tabellenblatt funktioniert je schon. Ich wollte dich fragen, wie kann ich die Anordung der Felder , bzw das Ziel, wo die Daten reingeschrieben werden sollen, selbst bestimmen.
Ich habe Dir Dein Beispiel noch mal verändert und ist hier dabei. Schau Dir bitte noch mal das MUSTER Tabellenblatt an.
https://www.herber.de/bbs/user/53755.xls
mir wäre es lieb, wenn die Daten nicht einfach beginnend von der ersten Spalte und Zeile nacheinander eingetragen werden, sondern dass ich selbst Bestimmen kann, wohin die daten geschrieben werden.
So soll z.B. der Inhalt ID immer in die Zelle C/ geschrieben werden (siehe rote Felder in der xls) und die Einträge aus der Spalte Code sollen immer nach G11 geschrieben werden.
Wie muss ich das machen ? So wäre mein Template sehr flexibel und ich könnte es schön gestalten. Bei ca. 20 Spalten, die ich nachher habe, könnte ich die Datenfelder schön anordnen.
Könntest Du mir bitte noch EINMAL zeigen, was ich da ändern muss.
Danke
Gruss
Joachim

Anzeige
AW: Daten transponiert auf Blätter verteilen
06.07.2008 10:04:16
Erich
Hallo Joachim,
noch ne Variante:

Option Explicit
Sub transp()
Dim rng As Range, lngC As Long
lngC = Cells(1, Columns.Count).End(xlToLeft).Column
For Each rng In Cells(2, 1).Resize(Cells(Rows.Count, 1).End(xlUp).Row - 1)
Worksheets.Add after:=Sheets(Sheets.Count)
Range(Cells(1, 1), Cells(lngC, 1)) = Application.Transpose(rng.Resize(, lngC))
Next rng
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige