Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1004to1008
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

Spalten in Zeilen anhängen

Spalten in Zeilen anhängen
01.09.2008 18:03:42
Jörg
Hallo zusammen,
in einer Tabelle mit ~1000 Artikeln in Spalte A stehen jeweils in den Spalten B-M die 12 zum Artikel gehörenden Monatswerte des Verbrauchs.
Ich brauche diese Daten jetzt so angeordnet, dass weiterhin alle Artikel in Spalte A stehen, jedoch die einzelnen Monatswerte untereinander. Also je Artikel 12 Zeilen mit je einem Wert in B, für den 1. Artikel in B1-B12, der nächste Artikel in B13-24 usw..
Das ganze geht einzeln mit "transponieren", jedoch habe ich keine Lust das Ganze für jeden Artikel einzeln durchzuklicken. Und schon mal gar nicht monatlich wiederholt...
Ich suche also nach einer einfachen Lösung, um diese Umformatierung durchzuführen.
Vorab schon mal herzlichen Dank!
Grüße aus Hessen
Jörg

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Spalten in Zeilen anhängen
01.09.2008 18:49:58
Chris
Servus Jörg,
probier mal das:
Option Explicit

Sub Transponieren()
Dim lngLetzte As Long, i As Long, k As Long, j As Long
lngLetzte = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
If lngLetzte = 1 And Range("A1") = "" Then Exit Sub
For i = lngLetzte To 2 Step -1
Rows(i & ":" & i + 10).Insert Shift:=xlDown
Next i
Dim TransposeArray(1 To 1, 2 To 13)
lngLetzte = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
For i = 1 To lngLetzte Step 12
For k = 2 To UBound(TransposeArray(), 2)
TransposeArray(1, k) = Cells(i, k)
Next k
Range(Cells(i, 2), Cells(i, 13)).ClearContents
j = i
For k = 2 To UBound(TransposeArray(), 2)
Cells(j, 2) = TransposeArray(1, k)
j = j + 1
Next k
Next i
End Sub


Die Daten müssen hierbei in Zeile 1 anfangen. Die Ursprungsdatei wird entsprechend geändert, also erstmal an einer Probedatei ausprobieren.
Gruß
Chris

Anzeige
AW: Spalten in Zeilen anhängen
01.09.2008 21:04:00
Jörg
Hallo Chris,
uups, das hatte ich mir einfacher vorgestellt, naja, gewünscht...
Da ich mit VBA leider keinerlei Erfahrungen habe, hilft mir die Antwort nicht wirklich weiter.
Trotzdem vielen Dank für die schnelle Antwort.
Geht da nix mit "normalen" excel-Mitteln?
Gruß
Jörg
AW: Spalten in Zeilen anhängen
02.09.2008 07:28:23
Jörg
Hallo Excel-Gemeinde,
die Frage ist noch offen, habe gestern in meiner Antwort das Häkchen vergessen...
Danke für Euren Input.
Gruß
Jörg
AW: Spalten in Zeilen anhängen
02.09.2008 09:48:00
Jörg
Hallo Chris,
ich habe mich getraut und es hat funktioniert. Meine VBA-Premiere. Vielen Dank!
Wie kann ich nun noch dafür sorgen, dass
1. je entstandener Zeile jeweils die Artikelnummer eingetragen wird (sie steht im Ergebnis jetzt nur jeweils in der 1. Zeile, dann folgen 11 leere, bevor die nächste Artikelnummer wieder eingetragen wurde),
2. das in der Ursprungstabelle in den Zellen B1 bis M1 eingetragene Datum je erzeugter Spalte dann in Spalte C eingetragen wird.
Ich bin gespannt...
Gruß
Jörg
Anzeige
AW: Spalten in Zeilen anhängen
02.09.2008 12:40:00
Chris
Servus Jörg,
das mit den Artikelnummern ist kein Problem. Den Punkt 2 verstehe ich nicht ganz, ich dachte in B1-M1 stehen schon Werte für den Monat, oder ist das das jeweilige Datum ?
Artikelnummer mit eintragen:

Sub Transponieren()
Dim lngLetzte As Long, i As Long, k As Long, j As Long
lngLetzte = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
If lngLetzte = 1 And Range("A1") = "" Then Exit Sub
For i = lngLetzte To 2 Step -1
Rows(i & ":" & i + 10).Insert Shift:=xlDown
Next i
Dim TransposeArray(1 To 1, 2 To 13)
lngLetzte = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
For i = 1 To lngLetzte Step 12
Cells(i, 1).Copy Range(Cells(i + 1, 1), Cells(i + 11, 1))
For k = 2 To UBound(TransposeArray(), 2)
TransposeArray(1, k) = Cells(i, k)
Next k
Range(Cells(i, 2), Cells(i, 13)).ClearContents
j = i
For k = 2 To UBound(TransposeArray(), 2)
Cells(j, 2) = TransposeArray(1, k)
j = j + 1
Next k
Next i
End Sub


Gruß
Chris

Anzeige
AW: Spalten in Zeilen anhängen
02.09.2008 15:04:31
Jörg
Hallo Chris,
ich bin begeistert.
Zu der Frage:
In den Spalten B1-M1 steht das Datum, in den Spalten B2-M2 usw. nach unten stehen die zugehörigen Verbrauchswerte der Artikels der zugehörigen Zeile (Kreuztabelle(?)).
Dieses Datum benötige ich in dem neuen Format nun pro erzeugter Zeile (also immer 12-mal untereinander das gleiche Datum, je Artikel).
Ich hoffe, so war es verständlich. Vorab schon mal Danke!
Gruß aus Hessen
Jörg
AW: Spalten in Zeilen anhängen
02.09.2008 15:12:00
Chris
Servus Jörg,
steht das Datum nur in Zeile 1 und fangen die Daten dann in Zeile 2 an und besteht ein Datensatz pro Artikel nur aus einer Zeile, oder sind das doch mehrere ?
Am besten du postest mal eine abgespeckte Beispieldatei, die das verdeutlicht (5-6 Datenzeilen sind ausreichend). Nur damit ich nichts falsch verstehe, weil momentan fangen die Daten für das Makro ja in Zeile 1 an.
Gruß
Chtris
Anzeige
AW: Spalten in Zeilen anhängen
02.09.2008 16:52:00
Chris
servus Jörg,
das sollte es tun:

Sub Transponieren()
Dim lngLetzte As Long, i As Long, k As Long, j As Long
lngLetzte = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows. _
Count)
If lngLetzte = 1 And Range("A1") = "" Then Exit Sub
For i = lngLetzte To 3 Step -1
Rows(i & ":" & i + 10).Insert Shift:=xlDown
Next i
Dim TransposeArray(1 To 1, 2 To 13)
Dim DatumsArray(1 To 1, 2 To 13)
lngLetzte = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows. _
Count)
For i = 2 To lngLetzte Step 12
Cells(i, 1).Copy Range(Cells(i + 1, 1), Cells(i + 11, 1))
For k = 2 To UBound(TransposeArray(), 2)
TransposeArray(1, k) = Cells(i, k)
DatumsArray(1, k) = Cells(1, k)
Next k
Range(Cells(i, 2), Cells(i, 13)).ClearContents
j = i
For k = 2 To UBound(TransposeArray(), 2)
Cells(j, 2) = TransposeArray(1, k)
Cells(j, 3) = DatumsArray(1, k)
j = j + 1
Next k
Next i
Range("B1:M1").ClearContents
End Sub


Gruß
Chris

Anzeige
AW: Spalten in Zeilen anhängen
02.09.2008 17:17:00
Jörg
Hallo Chris,
funktioniert super, genau wie gedacht!
Herzlichen Dank für die Hilfe und viele Grüße
Jörg
ps. Etwas schade finde ich jetzt, dass mir leider das Verständnis für die Lösung fehlt. Aber da kann ich wohl kurzfristig nix machen...

318 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige