PDA

Vollständige Version anzeigen : Zeilen mehrfach kopieren und einfügen gem Anzahl in einer Zelle


Willi1949
06.12.2017, 20:39
Hallo Excel-Gemeinde,
zuerst sorry dafür das ich mich direkt an Euch wende ohne großartig nach schon vorhandenen Lösungen zu suchen - die Zeit wird dafür zu eng.
Man hat mir dieses Problem aufgetragen da ich normalerweise Zeit genug habe nach Lösungen im Netz zu suchen - aber heute und morgen gehts einfach nicht.

Das Problem:

Eine Tabelle mit 7 Spalten (der einfach halber mit A-G bezeichnet) enthält in Spalte 6(F) eine Zahl.

Davon abhängig ist - wieoft diese Zeile unter oder über die aktuelle Zeile kopiert werden soll - je nachdem was besser durchzuführen ist
(wenn dort 4 steht - dann muß 3x kopiert und eingefügt werden / also x-1)

Die Tabelle besteht aus mehreren Tausend Zeilen!!!

------------------------
Wäre nett ihr könntet mir bzw meinem Bekannten helfen - - wird vmtl eine VBA-Lösung sein.
Ich habe leider nur Excel2003 - der Bekannte nutzt Excel2013

Gruß Willi

Willi1949
06.12.2017, 22:56
Ich setze die Anfrage als erledigt ---- bzw der Administrator kann sie komplett entfernen.

In der Datenbank vom Nov 2015 fand ich eine ähnliche Anfrage die ich für meine Zwecke umschreiben konnte.

Danke

Phi.VBA
07.12.2017, 08:44
@Willi

teste mal mit diesem Code und berichte bitte die Laufzeit.

Sub Phi()
With CreateObject("scripting.dictionary")
Ar = Cells(1).CurrentRegion
For i = 1 To UBound(Ar)
Tx = Array(Ar(i, 1), Ar(i, 2), Ar(i, 3), Ar(i, 4), Ar(i, 5), Ar(i, 6))
If IsNumeric(Ar(i, 7)) Then
Ar(i, 7) = IIf(Ar(i, 7) = 0, 1, Ar(i, 7))
For j = 1 To Ar(i, 7)
.Item(.Count) = Tx
Next j
Else
.Item(.Count) = Tx
End If
Next i
Cells(1, 9).Resize(.Count, 6) = Application.Index(.Items, 0, 0)
End With
End Sub

Willi1949
09.12.2017, 07:17
Hallo Phi
hab erst heute gesehen das du noch was geschrieben hast NACHDEM ich das Problem auf erledigt gesetzt hab.

Ich habe deinen Vorschlag getestet - - die Laufzeit war um einiges schneller - - ABER das Ergebnis war nicht so wie gewünscht.
Das Programm hat einfach die Zellinhalte NACH der Spalte 7 NOCHMAL geschrieben - das war nicht die Aufgabe.
Da ich Anfänger bin habe ich auch nicht nachvollziehen können was du in VBA geschrieben hast.

Hier nachfolgend das was ich abgeändert habe und das auch erfolgreich war.
Aus 7.487 Zeilen wurden 13.526 Zeilen wie von meinem Bekannten gewünscht

Sub kopieren()

Dim i As Integer, j As Integer
Dim Ende As Integer
Dim Anzahl As Integer
Ende = 7490
i = 2
Do
If Range("F" & i) <> "" And Range("F" & i) > 1 Then
Anzahl = Range("F" & i)
For j = 2 To Anzahl
Rows(i + 1).Insert
Range("A" & i & ":B" & i).Copy
Range("A" & i + 1 & ":B" & i + 1).PasteSpecial
Range("C" & i & ":D" & i).Copy
Range("C" & i + 1 & ":D" & i + 1).PasteSpecial
Range("E" & i & ":G" & i).Copy
Range("E" & i + 1 & ":G" & i + 1).PasteSpecial
Range("F" & i) = 1
Range("F" & i + 1) = 1
i = i + 1
Ende = Ende + 1
Next
i = i - 1
End If
i = i + 1
Loop Until i > Ende
Application.CutCopyMode = False
End Sub

Hier wohnt irgendwo der Druckteufel - immer wenn ich speichere erscheint im Code ein Symbol statt dem Buchstaben :D / bitte ändern

RPP63neu
09.12.2017, 07:51
Moin!
Hier wohnt irgendwo der Druckteufel
Dann spiele doch selbst den Exorzisten. ;)

Ändern
Erweitert
grafische Smilies deaktivieren

Du hast aber glaube ich nur eine Stunde nach Erstellung Zeit, den Beitrag zu editieren.
(Ansonsten weißt Du halt beim nächsten Mal Bescheid)

Gruß Ralf

RPP63neu
09.12.2017, 08:09
Noch etwas zum Thema:
Zumindest Dein Bekannter sollte seine Tabelle in ein Listobject ("intelligente" Tabelle) mittels Strg+t oder Einfügen, Tabelle umwandeln.
Dies gibt es ab Excel 2007.
Wenn an diese Tabelle neue Datensätze manuell oder auch per Makro angehängt werden, werden Formate und Formeln automatisch(!) weitergeführt.
Da braucht es keine "Vorratshaltung" mehr.

Etwas ähnliches gibt es auch für Dein altes Excel.
Du müsstest mal im Menü Daten suchen.
(evtl. Daten, Liste)

Edit:
Ich habe es für Excel 2003 gefunden.
Extras, Optionen, Bearbeiten
https://www.computerwissen.de/office/excel/artikel/listen-und-tabellen-in-excel-automatisch-erweitern.html

Gruß Ralf