Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1676to1680
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

Makro für WE Verteilung

Makro für WE Verteilung
06.03.2019 20:02:03
Hi Leute,
ich brauch einmal eure Hilfe. Normal versuche ich alles mut Formeln zulösen, aber hier komme ich nicht weiter.
Ziel ist es Daten von vier Tabs in ein fünftes Tab zu kopieren und die Daten zu mischen.
Ich versuche es zu erklären
Ich habe jeweils zwei Tabs mit Filial-Daten und zwei mit Artikeldaten.
Tab A in Spalte A stehen Filialnummern untereiander.
Tab B in Spalte D stehen die Artikelnummern untereiander
Tab C in Spalte A stehen wieder Filialnummern untereiander.
Tab D in Spalte D stehen wieder die Artikelnummern untereiander
Ich muss jeweils zwei Tabs haben da ich im späteren Schritten die Verteilungsparameter pro Tabpaar einzeln einfügen muss.
Im Tab E soll das Makro folgendes machen:
Als erstes müssen die Filialen aus Tab A in Spalte A eingefügt werden und in Spalte B jeweils die erste Artikelnummer von Tab B. Dann soll wieder alle Filialen aus Tab A unten dran gesetzt werden und daneben in Spalte B die nächste Artiklenummer von Tab B. Da soll so lange vortgesetzt werden bis auf Tab B alle Artikelnummern kopiert wurden. Ist das der Fall soll darunter der gleiche Vorgang aber mit Tab C und Tab D gemacht werden.
Ich hoffe ich konnte mich verständlich ausdrücken. Sonst gerne Fragen.
Vielen Dank für die Hilfe.
BG Kü

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro für WE Verteilung
06.03.2019 23:45:03
Rob
Hi, so z.B.:

Sub Zusammenfassen()
Dim i, x, lastRow, ArtikelB, ArtikelD As Integer
Dim FilialenA, FilialenC As Range
ArtikelB = Sheets("Tab B").Cells(Rows.Count, 4).End(xlUp).Row
ArtikelD = Sheets("Tab D").Cells(Rows.Count, 4).End(xlUp).Row
Set FilialenA = Sheets("Tab A").Range("A1:A" & Sheets("Tab A").Range("A1").End(xlDown).Row)
Set FilialenC = Sheets("Tab C").Range("A1:A" & Sheets("Tab C").Range("A1").End(xlDown).Row)
With Sheets("Tab E")
'FÜR ALLE ARTIKEL AUS TAB B
For x = 1 To ArtikelB
FilialenA.Copy .Range("A" & .Cells(.Rows.Count, 1).End(xlUp).Row + 1)
For i = 1 To ArtikelB
lastRow = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
.Cells(lastRow, 2) = Sheets("Tab B").Range("D" & x)
Next i
Next x
'FÜR ALLE ARTIKEL AUS TAB D
For x = 1 To ArtikelD
FilialenC.Copy .Range("A" & .Cells(.Rows.Count, 1).End(xlUp).Row + 1)
For i = 1 To ArtikelD
lastRow = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
.Cells(lastRow, 2) = Sheets("Tab D").Range("D" & x)
Next i
Next x
'LEERE ERSTE ZEILE AUS TAB E LÖSCHEN
.Rows(1).Delete
End With
End Sub

Anzeige
AW: Makro für WE Verteilung
06.03.2019 23:53:46
Rob
Ups, war noch n bug drin. Nimm den Code:

Option Explicit
Sub Zusammenfassen()
Dim i, x, lastRow, ArtikelB, ArtikelD, ZahlFilialenA, ZahlFilialenC As Integer
Dim FilialenA, FilialenC As Range
ArtikelB = Sheets("Tab B").Cells(Rows.Count, 4).End(xlUp).Row
ArtikelD = Sheets("Tab D").Cells(Rows.Count, 4).End(xlUp).Row
ZahlFilialenA = Sheets("Tab A").Cells(Rows.Count, 1).End(xlUp).Row
ZahlFilialenC = Sheets("Tab C").Cells(Rows.Count, 1).End(xlUp).Row
Set FilialenA = Sheets("Tab A").Range("A1:A" & Sheets("Tab A").Range("A1").End(xlDown).Row)
Set FilialenC = Sheets("Tab C").Range("A1:A" & Sheets("Tab C").Range("A1").End(xlDown).Row)
With Sheets("Tab E")
'FÜR ALLE ARTIKEL AUS TAB B
For x = 1 To ArtikelB
FilialenA.Copy .Range("A" & .Cells(.Rows.Count, 1).End(xlUp).Row + 1)
For i = 1 To ZahlFilialenA
lastRow = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
.Cells(lastRow, 2) = Sheets("Tab B").Range("D" & x)
Next i
Next x
'FÜR ALLE ARTIKEL AUS TAB D
For x = 1 To ArtikelD
FilialenC.Copy .Range("A" & .Cells(.Rows.Count, 1).End(xlUp).Row + 1)
For i = 1 To ZahlFilialenC
lastRow = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
.Cells(lastRow, 2) = Sheets("Tab D").Range("D" & x)
Next i
Next x
'LEERE ERSTE ZEILE AUS TAB E LÖSCHEN
.Rows(1).Delete
End With
End Sub

Anzeige
AW: Makro für WE Verteilung
07.03.2019 12:43:45
Denny
Hey Rob,
Vielen vielen Dank. Das läuft nach meinen genau nach meinen Vorstellungen.
Ich bräuchte aber noch mal deine Hilfe um das Makro zu verfeinern.
Ich habe es selber probiert und bin kläglich gescheitert.
Es geht darum ab wo in den Tabs die Daten genommen werden und wo genau diese hinkopiert werden soll.
Bei den Tab A und C (Filialen) brauche ich die Daten ab Zelle A2. Das habe ich ansatzweise hinbekommen. :-). Bei Tab B und D (Artikel) brauche ich die Daten ab Zelle B18.
Eingefügt muss das ganze in Tab E ab Filialen L6 und Artikel in M6.
Sorry das ich das nicht sofort geschrieben habe.
Vielen, Vielen Dank.
BG Denny
Anzeige
AW: Makro für WE Verteilung
06.03.2019 23:54:14
Rob
Ups, war noch n bug dring. Nimm den Code:

Option Explicit
Sub Zusammenfassen()
Dim i, x, lastRow, ArtikelB, ArtikelD, ZahlFilialenA, ZahlFilialenC As Integer
Dim FilialenA, FilialenC As Range
ArtikelB = Sheets("Tab B").Cells(Rows.Count, 4).End(xlUp).Row
ArtikelD = Sheets("Tab D").Cells(Rows.Count, 4).End(xlUp).Row
ZahlFilialenA = Sheets("Tab A").Cells(Rows.Count, 1).End(xlUp).Row
ZahlFilialenC = Sheets("Tab C").Cells(Rows.Count, 1).End(xlUp).Row
Set FilialenA = Sheets("Tab A").Range("A1:A" & Sheets("Tab A").Range("A1").End(xlDown).Row)
Set FilialenC = Sheets("Tab C").Range("A1:A" & Sheets("Tab C").Range("A1").End(xlDown).Row)
With Sheets("Tab E")
'FÜR ALLE ARTIKEL AUS TAB B
For x = 1 To ArtikelB
FilialenA.Copy .Range("A" & .Cells(.Rows.Count, 1).End(xlUp).Row + 1)
For i = 1 To ZahlFilialenA
lastRow = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
.Cells(lastRow, 2) = Sheets("Tab B").Range("D" & x)
Next i
Next x
'FÜR ALLE ARTIKEL AUS TAB D
For x = 1 To ArtikelD
FilialenC.Copy .Range("A" & .Cells(.Rows.Count, 1).End(xlUp).Row + 1)
For i = 1 To ZahlFilialenC
lastRow = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
.Cells(lastRow, 2) = Sheets("Tab D").Range("D" & x)
Next i
Next x
'LEERE ERSTE ZEILE AUS TAB E LÖSCHEN
.Rows(1).Delete
End With
End Sub

Anzeige
AW: Makro für WE Verteilung
07.03.2019 13:28:12
Denny
Hey Rob,
Vielen vielen Dank. Das läuft nach meinen genau nach meinen Vorstellungen.
Ich bräuchte aber noch mal deine Hilfe um das Makro zu verfeinern.
Ich habe es selber probiert und bin kläglich gescheitert.
Es geht darum ab wo in den Tabs die Daten genommen werden und wo genau diese hinkopiert werden soll.
Bei den Tab A und C (Filialen) brauche ich die Daten ab Zelle A2. Das habe ich ansatzweise hinbekommen. :-). Bei Tab B und D (Artikel) brauche ich die Daten ab Zelle B18.
Eingefügt muss das ganze in Tab E ab Filialen L6 und Artikel in M6.
Sorry das ich das nicht sofort geschrieben habe.
Vielen, Vielen Dank.
BG Denny
Anzeige
AW: Makro für WE Verteilung
07.03.2019 13:36:42
Rob
Hi, stehen die Artikel in Spalte B oder D? In Deiner ursprünglichen Nachricht stand Spalte D. Jetzt schreibst Du ab Zelle B18.
/Rob
AW: Makro für WE Verteilung
07.03.2019 13:47:39
Denny
Du hast recht ich hatte erst D geschrieben. Die Artikel fangen ab B18 an und können max. bis B41 gehen.
vielen Dank.
Denny
AW: Makro für WE Verteilung
07.03.2019 14:30:33
Rob
Probier es mal damit:

Option Explicit
Sub Zusammenfassen()
Dim i, x, lastRow, ArtikelB, ArtikelD, ZahlFilialenA, ZahlFilialenC As Integer
Dim FilialenA, FilialenC As Range
ArtikelB = Sheets("Tab B").Cells(Rows.Count, 2).End(xlUp).Row
ArtikelD = Sheets("Tab D").Cells(Rows.Count, 2).End(xlUp).Row
ZahlFilialenA = Sheets("Tab A").Cells(Rows.Count, 1).End(xlUp).Row - 1
ZahlFilialenC = Sheets("Tab C").Cells(Rows.Count, 1).End(xlUp).Row - 1
Set FilialenA = Sheets("Tab A").Range("A2:A" & Sheets("Tab A").Range("A2").End(xlDown).Row)
Set FilialenC = Sheets("Tab C").Range("A2:A" & Sheets("Tab C").Range("A2").End(xlDown).Row)
With Sheets("Tab E")
'FÜR ALLE ARTIKEL AUS TAB B
FilialenA.Copy .Range("L6")
For x = 1 To ZahlFilialenA
.Cells(x + 5, 13).Value = Sheets("Tab B").Cells(18, 2).Value
Next x
For x = 19 To ArtikelB
FilialenA.Copy .Range("L" & .Cells(.Rows.Count, 12).End(xlUp).Row + 1)
For i = 1 To ZahlFilialenA
lastRow = .Cells(.Rows.Count, 13).End(xlUp).Row + 1
.Cells(lastRow, 13).Value = Sheets("Tab B").Range("B" & x).Value
Next i
Next x
'FÜR ALLE ARTIKEL AUS TAB D
FilialenC.Copy .Range("L" & .Cells(Rows.Count, 12).End(xlUp).Row + 1)
lastRow = .Cells(Rows.Count, 13).End(xlUp).Row + 1
For x = lastRow To ZahlFilialenC + lastRow - 1
.Cells(x, 13).Value = Sheets("Tab D").Cells(18, 2).Value
Next x
For x = 19 To ArtikelD
FilialenC.Copy .Range("L" & .Cells(.Rows.Count, 12).End(xlUp).Row + 1)
For i = 1 To ZahlFilialenC
lastRow = .Cells(.Rows.Count, 13).End(xlUp).Row + 1
.Cells(lastRow, 13).Value = Sheets("Tab D").Range("B" & x).Value
Next i
Next x
End With
End Sub

Anzeige
AW: Makro für WE Verteilung
08.03.2019 10:26:02
Denny
Vielen Dank.
Klappt perfekt.
AW: Makro für WE Verteilung
08.03.2019 13:35:45
Denny
Hey Rob,
ich doch noch eine Frage. Ich möchte das Makro besser verstehen und habe die Herausforderung das ich ggf. Das Tab E noch einmal anpassen muss, da noch spalten hinzukommen. Aktuell wird ja ab L6 eingefügt. Wenn ich jetzt noch zwei Zellen einfüge und dann müssen die Daten in N6 eingefügt werden. Reicht dann, das ich alle L in N umwandel wie zb hier:
For x = 19 To ArtikelD
FilialenC.Copy .Range("L" & .Cells(.Rows.Count, 12).End(xlUp).Row + 1)
For i = 1 To ZahlFilialenC
lastRow = .Cells(.Rows.Count, 13).End(xlUp).Row + 1
.Cells(lastRow, 13).Value = Sheets("Tab D").Range("B" & x).Value
Oder muss ich auch was an den Zahlen ändern.
Aktuell fällt es mir noch schwer die Logiken dahinter zu verstehen.
Vielen Dank.
Anzeige
AW: Makro für WE Verteilung
12.03.2019 20:14:06
Rob
Ja, genau. Du musst zum einen L mit N ersetzen, sowie .Rows.Count, 12 mit .Rows.Count, 14, weil N = 14te Spalte.
Außerdem noch im nachfolgenden Abschnitt die 13 mit 15 ersetzen:

lastRow = .Cells(.Rows.Count, 13).End(xlUp).Row + 1
.Cells(lastRow, 13).Value = Sheets("Tab D").Range("B" & x).Value
Dann sollte es funktionieren!
AW: Makro für WE Verteilung
12.03.2019 21:14:28
Rob
So z.B. mit einer Funktion:

Sub Zusammenfassen()
Dim i, x, lastRow, ArtikelB, ArtikelD, ZahlFilialenA, ZahlFilialenC As Integer
Dim FilialenA, FilialenC As Range
ArtikelB = Sheets("Tab B").Cells(Rows.Count, 2).End(xlUp).Row
ArtikelD = Sheets("Tab D").Cells(Rows.Count, 2).End(xlUp).Row
ZahlFilialenA = Sheets("Tab A").Cells(Rows.Count, 1).End(xlUp).Row - 1
ZahlFilialenC = Sheets("Tab C").Cells(Rows.Count, 1).End(xlUp).Row - 1
Set FilialenA = Sheets("Tab A").Range("A2:A" & Sheets("Tab A").Range("A2").End(xlDown).Row)
Set FilialenC = Sheets("Tab C").Range("A2:A" & Sheets("Tab C").Range("A2").End(xlDown).Row)
With Sheets("Tab E")
'FÜR ALLE ARTIKEL AUS TAB B
FilialenA.Copy .Range("N6")
For x = 1 To ZahlFilialenA
.Cells(x + 5, 15).Value = Sheets("Tab B").Cells(18, 2).Value
Next x
Call KopiereArtikel("Tab B", "Tab E", ZahlFilialenA, ArtikelB, FilialenA)
'FÜR ALLE ARTIKEL AUS TAB D
FilialenC.Copy .Range("N" & .Cells(Rows.Count, 14).End(xlUp).Row + 1)
lastRow = .Cells(Rows.Count, 15).End(xlUp).Row + 1
For x = lastRow To ZahlFilialenC + lastRow - 1
.Cells(x, 15).Value = Sheets("Tab D").Cells(18, 2).Value
Next x
Call KopiereArtikel("Tab D", "Tab E", ZahlFilialenC, ArtikelD, FilialenC)
End With
End Sub
Private Function KopiereArtikel(TabelleQuelle, TabelleZiel As String, ByVal AnzahlFilialen,  _
ByVal AnzahlArtikel As Integer, ByVal Filialen As Range)
Dim x, i, lastRow As Integer
With Sheets(TabelleZiel)
For x = 19 To AnzahlArtikel
lastRow = .Cells(.Rows.Count, 14).End(xlUp).Row + 1
Filialen.Copy .Range("N" & lastRow)
For i = 1 To AnzahlFilialen
lastRow = .Cells(.Rows.Count, 15).End(xlUp).Row + 1
.Cells(lastRow, 15).Value = Sheets(TabelleQuelle).Range("B" & x).Value
Next i
Next x
End With
End Function

Anzeige
AW: Makro für WE Verteilung
15.03.2019 12:19:14
Denny
Hey Rob,
danke das hilft enorm und jetzt verstehe ich auch schon mehr von dem.
Die Datei funktioniert jetzt super mit den angepassten Feldern.
Eine Herausforderung habe ich aber noch. Das hatte ich so vorher nicht auf dem Schirm.
bis jetzt bin ich immer davon ausgegangen das ich jeweils alle Tabs brauche. Jetzt ist aber so, das ich nur im Tab A (Filialen A) und Tab B Artikel Daten habe und die anderen beiden wurden nicht ausgefüllt. Ich bekomme eine Debug das er nichts auf den anderen Tabs finden.
Ich Dokter seit gestern damit rum, aber leider bekomme ich es nicht hin.
Könntest du mir bitte noch einmal helfen.
Vielen Dank.
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige