Hallo alle miteinander,
ich habe ein mittelschweres Problem woran ich mir seit Tagen die Zähne ausbeiße.
Ich habe eine Excel-Tabelle die wie folgt aussieht
In Spalte A stehen Materialnummern
In Spalte B stehen zu den Materialnummern gestaffelte Stückzahlen untereinander, zu jeder Materialnummer unterschiedlich viele. D.h. jede Materialnummer deckt mehrere Zeilen ab.
In Spalte C stehen jeweils zu den gestaffelten Stückzahlen die Preise
Beispiel Ausgangsdatei:
url=[http://www.bilduploadr.de/view/9u6k5e4yt/][img]http:…]
[size=1]url=[http://www.bilduploadr.de/]kostenlos bilder hochladen[/url] - bilduploadr.de[/size]
Bespiel Zieldatei:
url=[http://www.bilduploadr.de/view/fwu3la5z/][img]http:/…]
[size=1]url=[http://www.bilduploadr.de/]kostenlos bilder hochladen[/url] - bilduploadr.de[/size]
Jetzt zum Problem:
Ich möchte automatisiert die jeweiligen Stückzahlen und Preise nebeneinander in den Spalten neben der Materialnummer haben, damit die Materialnummern nicht mehr doppelt vorkommen. Ich habe das ganze schon über ein Pivot probiert, dabei entstehen jedoch unzählige Spalten nebeneinander, aufgrund der unzähligen verschiedenen Staffelmengen.
Ich hoffe mir kann jemand bei diesem Problem unter die Arme greifen!?
Danke Euch im voraus für die Mühe und Zeit!
Deine Links funtionieren nicht
Hallo Sunny,
teste sie mal selbst in deinem beitrag.
So klappt es: http://www.bilduploadr.de/view/9u6k5e4yt/
Aber Bild hin oder her, lade doch gleich die mappe hoch, mit file-upload o.ä., s. FAQ:2606
Gruß
Reinhard
Hallo Sunny,
Du hast unterschiedliche Staffeln - wie sollen die denn neben den Materialnummern angeordnet werden?
Beispiel:
0815 0 100,00 €
0815 50 90,00 €
0815 100 80 begin\_of\_the\_skype\_highlighting 0815 100 80 end\_of\_the\_skype\_highlighting begin\_of\_the\_skype\_highlighting 0815 100 80 end\_of\_the\_skype\_highlighting begin\_of\_the\_skype\_highlighting 0815 100 80 end\_of\_the\_skype\_highlighting begin\_of\_the\_skype\_highlighting 0815 100 80 end\_of\_the\_skype\_highlighting begin\_of\_the\_skype\_highlighting 0815 100 80 end\_of\_the\_skype\_highlighting begin\_of\_the\_skype\_highlighting 0815 100 80 end\_of\_the\_skype\_highlighting begin\_of\_the\_skype\_highlighting 0815 100 80 end\_of\_the\_skype\_highlighting begin\_of\_the\_skype\_highlighting 0815 100 80 end\_of\_the\_skype\_highlighting begin\_of\_the\_skype\_highlighting 0815 100 80 end\_of\_the\_skype\_highlighting begin\_of\_the\_skype\_highlighting 0815 100 80 end\_of\_the\_skype\_highlighting begin\_of\_the\_skype\_highlighting 0815 100 80 end\_of\_the\_skype\_highlighting,00 €
0815 1000 70,00 €
4711 10 30,00 €
4711 75 25,00 €
4711 150 20,00 €
Was soll jetzt passieren? Wie sollen die Spalten nun aussehen?
MatNr. ???? ???? ???? ???? ???? ???? ????
0815 ???? ???? ???? ???? ???? ???? ????
4711 ???? ???? ???? ???? ???? ???? ????
Gruß, Manfred
Hi Sunny,
ah jetzt ja, mit den Bildern…
Was soll mit den „überzähligen“ Zeilen passieren? Sollen Sie drinbleiben?
Gruß, Manfred
Hallo Sunny,
Folgendes Makro sollte das machen, was in Deinem Ziel sein soll. (Die Titelzeile „Staffel x“ setze ich dabei nicht; das kann aber ebenso noch mit reingebaut werden.)
Sub TransponierDasZeugs()
Dim lngZeile As Long
Dim strLastNr As String
Dim strAktNr As String
Dim lngStaffel As Long
Dim lngStaffelzeile As Long
Dim strStaffelbereich As String
lngZeile = 2
Do While Tabelle2.Cells(lngZeile, 1) ""
strAktNr = Tabelle2.Cells(lngZeile, 1)
If strAktNr strLastNr Then
' neue MatNr. =\> Staffel 1
lngStaffel = 0
lngStaffelzeile = lngZeile
strLastNr = strAktNr
End If
lngStaffel = lngStaffel + 1
strStaffelbereich = Tabelle2.Cells(lngZeile, 2) & "-" & Tabelle2.Cells(lngZeile, 3)
' Hochkomma, sonst wandelt Excel z. B. "1-9" in ein Datum um:
Tabelle2.Cells(lngStaffelzeile, 3 + 2 \* lngStaffel) = "'" & strStaffelbereich
Tabelle2.Cells(lngStaffelzeile, 4 + 2 \* lngStaffel) = Tabelle2.Cells(lngZeile, 4)
' ggf. noch in Zeile 1 die "Staffel x" setzen,
' entweder in jedem Durchlauf, oder Du merkst Dir das Maximum
' an Staffeln und setzt es im Anschluss.
lngZeile = lngZeile + 1
Loop
End Sub
Gruß, Manfred
Hallo! Idee OHNE Makro
bei pivot würde er alle unterschiedlichen Staffelmengen aller Materialnummern nebeneinander auseinanderziehen, richtig?
(Material XY hat dann ne Staffelmenge in 1., 4. und 27. Spalte oder so…)
verwende doch ein Spalte „Staffelnummer“ für die Pivottabelle und ziehen Staffelmenge UND Staffelpreis als Datenfeld in Deine Pivottabelle (und Materialnummer als Zeile)
wie die Staffelnummer erzeugen?
Fall A: Tabelle ist nach Materialnummern sortiert:
Formel in E2: =WENN($A2=$A1;SUMME(E1;1);1) und runterkopieren…
-> sollte bei jeder neuen Materialnummer mit 1 anfangen und dann hochzählen…
Fall B: Tabelle unsortiert:
Formel in E2: =ZÄHLENWENN(A$1:A2;A2) und runterkopieren…
-> findet und zählt alle gleichen Materialnummern vom Tabellenbeginn bis zur akt. Zeile…
so oder so: Formel in E1: =„Staffel“
jetzt musst Du nur noch ne NEUE Pivozzabelle anlegen mit dem Bereich A1:Exxx - wie oben angedeutet…
funzt das? cu kai
Guten Morgen,
danke Kai, sieht schon sehr gut aus. Nur habe ich noch ein Problem und zwar dass pro Zeile/Material nun wieder etliche Leerspalten entstehen und die Übersicht schlecht ist. Gibt es noch eine Methode, leere Zellen pro Zeile automatisch suchen zu lassen und zu löschen?
Guten Morgen Manfred,
die überzähligen Zeilen sollten automatisch gelöscht werden.
Danke & Gruß
Hallo,
so habe das Makro jetzt auch getestet, es arbeitet eiwandfrei.
Ist es möglich die restlichen Zeilen/Materialnummern automatisch löschen
zu lassen??
Gruß
Sunny
Hallo Sunny,
klar geht das:
Sub TransponierDasZeugs()
Dim lngZeile As Long
Dim strLastNr As String
Dim strAktNr As String
Dim lngStaffel As Long
Dim lngStaffelzeile As Long
Dim strStaffelbereich As String
lngZeile = 2
Do While Tabelle2.Cells(lngZeile, 1) ""
strAktNr = Tabelle2.Cells(lngZeile, 1)
If strAktNr strLastNr Then
' neue MatNr. =\> Staffel 1
lngStaffel = 0
lngStaffelzeile = lngZeile
strLastNr = strAktNr
End If
lngStaffel = lngStaffel + 1
strStaffelbereich = Tabelle2.Cells(lngZeile, 2) & "-" & Tabelle2.Cells(lngZeile, 3)
' Hochkomma, sonst wandelt Excel z. B. "1-9" in ein Datum um:
Tabelle2.Cells(lngStaffelzeile, 3 + 2 \* lngStaffel) = "'" & strStaffelbereich
Tabelle2.Cells(lngStaffelzeile, 4 + 2 \* lngStaffel) = Tabelle2.Cells(lngZeile, 4)
' ggf. noch in Zeile 1 die "Staffel x" setzen,
' entweder in jedem Durchlauf, oder Du merkst Dir das Maximum
' an Staffeln und setzt es im Anschluss.
If lngZeile lngStaffelzeile Then
Tabelle2.Rows(lngZeile).Delete
Else
lngZeile = lngZeile + 1
End If
Loop
End Sub
Gruß, Manfred
Hallo!
hast Du in Deiner Grundtabelle „leere“ Zeilen?
(Materialnummer mit Staffelmenge aber ohne Staffelpreis oder sowas?)
und hast Du die Pivottabellen-Methode verwendet?
-> dann kannst Du ein Seitenfeld (ganz oben reinzuziehen im Pivot-Assistenten) verwenden: einen ggf. neue Spalte in der Grundtabelle mit der Formel =WENN(SUMME(XX);1;0) wobei XX die jeweilige Zelle mit dem Staffelpreis ist in jeder Zeile…
-> wenn Du in dem Seitenfeld (heisst das so?) nur die Sätze mit „1“ filterst solltest Du keine leeren Daten/Zeilen bekommen
Oder meinst Du was ganz anderes: kannst Du Dein Beispiel nicht mal hochladen und zugänglich machen?
cu kai