Transpondieren in Exel

Hallo zusammen,

ich habe ein Problem in Excel mit dem Transpondieren.

Ich habe in einer Liste Lieferanten mit den dazugehörigen Warengruppen stehen.

Sieht so aus.

Lieferant WG
100001 A
100001 B
100001 C
100002 A
100002 E

Ich will das er mit die Warengruppe in Spalten abträgt.
In etwa so:

100001 A B C
100002 A E

Kann mir jemand verraten wie ich das mache?
Habe schon Makro probiert, leider bin ich hier nicht so wirklich fit.

Vielen Dank

Hallo Christian,
ich kann Dir vermutlich nicht viel helfen, ich würde das mit einem (trivialen) Makro machen, aber das setzt etwas Programmierkenntnisse mit VBA voraus (und die hast Du wohl nicht). Ich weiß nicht, wie groß die Liste ist und ob das eine immer wiederkehrende Aufgabe ist. Sonst evtl. einfach händisch, sortieren nach Spalte 1 und dann die Werte aus Spalte 2 übernehmen. Viel Erfolg.
Rainer

Hallo,

leider kann ich bei der Beantwortung der Frage nicht weiterhelfen, da ich im Bereich Excel nur ueber einfache Grundkenntnisse verfuege.

Chris

Hallo Rainer,

die Liste ist über 10.000 Zeilen lang und soll min 2 mal im Jahr gemacht werden.
Händisch ginge, wäre aber viel Arbeit.

Habe schon mit Makro rumgespielt, leider fehlt mir halt die Grundkenntnis.
Habe schon einige Makros gefunden, leider kann ich die für mich nicht anpassen.

Hallo zusammen,

habe folgenden Code.

Sub TransposeSpecial()
Dim lngSource As Long
Dim intTarget As Integer
Dim i As Byte

lngSource = 1
intTarget = 1

With Worksheets(7)
Do While .Cells(lngSource, 1) Empty
For i = 1 To 5
Worksheets(8).Cells(intTarget, i) = _
.Cells(lngSource + i - 1, 1)
Next i

lngSource = lngSource + 5
intTarget = intTarget + 1
Loop
End With
End Sub

Dieser sollte lt. Handbuch gehen, leider hab ich keine Leerzeichen zwischen den einzelnen Lieferantennummern.

Also das Empty oben bereitet mir Ärger und wenn ich das so laufen lassen kommt Laufzeitfehler 9.

Kann mir hier jemand weiterhelfen.

vielen Dank.

Mit der Funktion „Transponieren“ lässt sich dein Problem eher nicht lösen, da bei dieser Funktion nur Spalten und Zeilen vertauscht werden. Die gewünschte Sortierung wird so nicht erreicht. Das sieht mir eher nach VBA aus, da muß ich passen.
Gruß Peter

Hallo zusammen,

habe folgenden Code.

Sub TransposeSpecial()
Dim lngSource As Long
Dim intTarget As Integer
Dim i As Byte

lngSource = 1
intTarget = 1

With Worksheets(7)
Do While .Cells(lngSource, 1) Empty
For i = 1 To 5
Worksheets(8).Cells(intTarget, i) = _
.Cells(lngSource + i - 1, 1)
Next i

lngSource = lngSource + 5
intTarget = intTarget + 1
Loop
End With
End Sub

Dieser sollte lt. Handbuch gehen, leider hab ich keine Leerzeichen zwischen den einzelnen Lieferantennummern.

Also das Empty oben bereitet mir Ärger und die For i = 1 To 5, da 1 oder meherer Warengruppencodes drunter stehen können und nicht fest ist.

Kann mir hier jemand weiterhelfen.

vielen Dank.

Hallo,

die Einfügefunktion „Transponieren“ ist für diese Aufgabe nicht geeignet. Die Aufgabe kann am besten mit der Pivot-Tabellenfunktion erledigt werden. Dabei sind die Werte der Spalte „Lieferant“ als Zeilenwerte und die Spalte der „Warengruppe“ sowohl als Spaltenüberschriften als auch als Spaltenwerte zu definieren. Voilá, schon habe ich eine Übersicht auf einer Welcher Lieferant welche Warengruppe bedient.

mfg

Hallo Josef,

vielen Dank für deine Anwort.
Ja mit Pivot geht es, aber dann seh ich nur welche Warengruppe bedient wird. Leider gekomm ich aber nicht den Lieferant mit den Warengruppennamen in einer Zeile.

Habe aber das Ergebnis in neuen Sheet kopiert und gefilter und die Summen dann mit den Warengruppennamen ersetzt.
Somit hatte ich dann das Ergebnis.

Danke.

Hallo Christian

Kann dir da leider auch nicht weiter helfen.

Wichtig wäre aber noch, wenn du angibst, welche Version von Excel du verwendest. Wenn du noch 2003 oder älter hast, sieht das ganz anders aus, als wenn du die Version 2007 oder gar 2010 hast. Schon zwischen den beiden letzt genannten gibt es massive Unterschiede.

Gruss
HaegarCH

Grüezi Christian

Wie ich gelesen habe, ist das Problem ja bereits gelöst?

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Hallo Christian,

da ich jetzt leider kein Excel zur Verfügung habe, kann ich Dir nur eine Richtung geben. Grundsätzlich würde ich es mit einem Array versuchen! Vielleicht suchst du mal nach Beispielen, z. B. unter Herber.de.

Vorgehensweise: Die Anzahl Lieferanten und Warengruppen bestimmen. Mit diesen max. Zahlen das Array dimensionieren und dann die Werte in das Array einlesen. Der Inhalt sieht dann z.B. so aus: arrLieferant( 100001, A), dann arrLieferant(100001, B) usw. Du nimmst dann Variablen für die LfNr & WG beim Einlesen z.B. intRow und intCol. Wenn Du alle Werte eingelesen hast, kannst Du mit zwei For-Schleife die Werte wieder in Zellen wegschieben. z. B. cell(y,x) = arrLieferant(intRow,intCol) , eine For-Schleife für die Zeile und eine für die Spalte.

Vielleicht hilft dir dies beim Suchen mit anderen Sichtwörten in anderen Foren weiter. Auch solltest Du zu dieser Fragestellung einige oder ähnliche Fragen/Antworten geben.

Gruß
ramaka

sorry, ich verstehe die Problemstellung nicht

Gruß

sorry, ich verstehe die Problemstellung nicht

Gruß

Vielen Dank an alle. Problem ist gelöst.

Hallo Herr Odorfer,

das ist einfacher als sich der Begriff hierfür anhört.
Markieren Sie mit der Maus die zu kopierenden WG dann den Cursor auf die erste Zelle in der entsprechenden Spalte setzen. Dann rechte Maustaste, Inhalte einfügen klicken, vor Werte den Radiobutton klicken, den Haken bei Transponieren setzen und OK klicken. Fertig
Na, war doch voll easy oder?

Gruß und gutes Gelingen von Hugo

Hallo Christian,
ich habe Deine Rückfrage erhalten, aber vor Montag leider keine Zeit darauf einzugehen. Hast Du mittlerweile eine Lösung? Wenn nein, könnte ich Dir am Montag den Makro kurz skizzieren, aber ohne jeglichen Komfort wie eigene Schaltfläche zum Ausführen des Makros etc. Falls Du meine Hilfe noch brauchst sag es mir bitte und teile mir auch mit, mit welcher Excel-Version Du arbeitest. Außerdem wäre eine private Mailadresse hilfreich, das ist bequemer als dieses kleine Eingabefenster hier.
Rainer