Microsoft Excel

Herbers Excel/VBA-Archiv

Datenfelden in Excel auf Seite schreiben.

Betrifft: Datenfelden in Excel auf Seite schreiben. von: Joachim
Geschrieben am: 05.07.2008 21:53:35

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

  

Betrifft: Transponieren von: Matthias L
Geschrieben am: 05.07.2008 22:02:33

Hallo



Gruß Matthias


  

Betrifft: AW: Transponieren von: Joachim
Geschrieben am: 05.07.2008 22:26:21

Hi,

ich kenne diese Funktion, aber ich suche nach einem Makro

Gruss
Joachim


  

Betrifft: AW: Transponieren von: Herby
Geschrieben am: 06.07.2008 08:12:37

Hallo Joachim,

geht das Beispiel in deine Richtung ?

https://www.herber.de/bbs/user/53623.xls

Viele Grüße
Herby


  

Betrifft: AW: Transponieren von: Jochen
Geschrieben am: 07.07.2008 08:41:33

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


  

Betrifft: AW: Transponieren von: Erich G.
Geschrieben am: 07.07.2008 09:48:11

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


  

Betrifft: AW: Transponieren von: Joachim
Geschrieben am: 07.07.2008 11:57:03

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


  

Betrifft: AW: Transponieren von: Erich G.
Geschrieben am: 07.07.2008 13:11:31

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


  

Betrifft: AW: Transponieren von: Joachim
Geschrieben am: 07.07.2008 14:00:02

Hi Erich,

jetzt funktionierts, spitze.
was ist denn nun anders ?

Gruss
Joachim


  

Betrifft: AW: Transponieren von: Erich G.
Geschrieben am: 07.07.2008 16:20:35

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


  

Betrifft: AW: Transponieren von: Joachim
Geschrieben am: 11.07.2008 09:46:55

Hallo Erich,

kan ich Dich wegen Deinem Beispiel noch mal was Fragen ?

Gruss
Joachim


  

Betrifft: AW: Na klar! (owT) von: Erich G.
Geschrieben am: 11.07.2008 09:59:19




  

Betrifft: AW: Na klar! (owT) von: Joachim
Geschrieben am: 11.07.2008 12:32:43

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


  

Betrifft: AW: Transponiert in Muster kopieren von: Erich G.
Geschrieben am: 11.07.2008 13:28:13

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


  

Betrifft: AW: Transponiert in Muster kopieren von: Joachim
Geschrieben am: 11.07.2008 13:55:57

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


  

Betrifft: AW: Daten transponiert auf Blätter verteilen von: Erich G.
Geschrieben am: 06.07.2008 10:04:16

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


 

Beiträge aus den Excel-Beispielen zum Thema "Datenfelden in Excel auf Seite schreiben."