Anzeige
Archiv - Navigation
1512to1516
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

Zeilen bei gleicher Nummer einfügen

Zeilen bei gleicher Nummer einfügen
06.09.2016 13:02:21
Heinz
Hallo Liebe Excellenten,
ich habe folgendes Problem:
Das Problem kommt daher, dass bei den
Molkereiprodukten oft verschiedene Sorten
in einem Karton geliefert werden.
Ich habe eine Artikelliste, die im
Original ca. 2000 Zeilen umfasst.
Ein Auszug:
https://www.herber.de/bbs/user/108049.xlsx
Pro Artikel gibt es entweder nur eine EAN-Nummer
oder eben mehrere. Die stehen dann in der Zeile
in den Spalten EAN1, EAN2 usw. (das geht bis zu 30 EAN-Nummern).
Meine Herausforderung.
Ich brauche die Artikel untereinander, d.h. wenn
ein Artikel 5 EAN hat, dann brauche ich 5 Zeilen,
bei denen in den ersten 3-4 Spalten immer das
gleiche stehen soll und in der fünften Spalte
dann eben die 5 verschiedenen EAN-Nummer untereinander.
Mit dem Makro-Recorder bin ich da schnell am Ende.
Kann mir jemand helfen?
Vielleicht auch nur den Ansatz, dann versuche ich
mich durchzuwühlen.
Ich wünsche allen eine schönen Tag.
Heinz

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Teste mal...
06.09.2016 14:24:01
Michael
Hallo Heinz!
Ist jetzt nur sehr grob, aber sollte bei 2000 Datensätzen trotzdem noch halbwegs laufen...
Teste mal:
Sub EANsammeln()
Dim Wb As Workbook
Dim WsQ As Worksheet
Dim WsZ As Worksheet
Dim EANlist As Range
Dim EANc As Range
Dim EANend As Range
Dim EANcount&, i&
Application.ScreenUpdating = False
Set Wb = ThisWorkbook
With Wb
Set WsQ = .Worksheets(1)
Set WsZ = .Worksheets.Add(after:=.Worksheets(.Worksheets.Count))
WsZ.Name = "EAN_gesammelt"
End With
With WsQ
.Range(.Cells(1, 1), .Cells(1, 5)).Copy
WsZ.Range("A1").PasteSpecial xlPasteValues
WsZ.Range("A1").PasteSpecial xlPasteFormats
Set EANlist = .Range(.Cells(2, 5), .Cells(.Rows.Count, 5).End(xlUp))
For Each EANc In EANlist
Set EANend = .Range(EANc, EANc.End(xlToRight))
EANcount = WorksheetFunction.CountA(.Range(EANc, EANend))
For i = 1 To EANcount
.Range(EANc.Offset(, -4), EANc.Offset(, -1)).Copy Destination:= _
WsZ.Cells(WsZ.Rows.Count, 1).End(xlUp).Offset(1, 0)
Next i
.Range(EANc, EANc.End(xlToRight)).Copy
WsZ.Cells(.Rows.Count, 5).End(xlUp).Offset(1, 0).PasteSpecial _
Paste:=xlPasteValuesAndNumberFormats, Transpose:=True
Next EANc
End With
WsZ.Activate
Application.CutCopyMode = False
Application.ScreenUpdating = False
End Sub
Hinweis: Die von Dir gewünschte Ansicht wird in einem neuen, eigenen Tabellenblatt (namens "EAN_gesammelt") ausgegeben.
LG
Michael
Anzeige
Danke - Wahnsinn
06.09.2016 15:40:04
Heinz
Hallo Michael,
vielen, vielen Dank.
Ich habe einfach das Makro reinkopiert und es funkt.
Ein Wahnsinn.
Nur mal so, damit ich ein Gefühl dafür bekomme.
Wie lange brauchst Du für so was?
Heinz
Aber gerne, freut mich! Ungefähr...
06.09.2016 16:24:57
Michael
Hallo Heinz,
... 15 bis 20 Minuten (+/-) würd ich sagen? Der Code an sich ist ja nicht die Hexerei, es ist eher die Zeit, die benötigt wird um das Kernproblem zu analysieren und dann über eine vernünftige Vorgehensweise nachzudenken; wenn der Algorithmus mal stimmt, ist's ja schnell geschrieben ;-). Und wenn's umfangreicher/komplexer wird kommt natürlich immer wieder Zeit zum Testen und Zwischentesten dazu - also ich muss das zumindest machen. Und natürlich ist eine erste funktionierende Version möglicherweise noch nicht effizient genug etc., d.h. für schlankere, effizientere Codes etc. braucht's dann oft noch Zeit für Überarbeitung.
Hilft Dir die Antwort weiter?
LG
Michael
Anzeige
hat geholfen , Danke für die Info owt
11.09.2016 09:24:16
Heinz
hat geholfen , Danke für die Info owt
11.09.2016 09:24:17
Heinz

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige