Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1524to1528
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

Liste kopieren und mehrmals übeinander einfügen

Liste kopieren und mehrmals übeinander einfügen
25.11.2016 20:33:05
Norbert
Hallo Excel Experten,
ich bitte um eure Hilfe bei der Lösung meines Problems.
In Spalte B stehen die Namen A bis K usw. untereinander, wobei es vorkommt, dass einige Zellen zwischen drin leer sind.
In der Spalte A steht neben einigen Namen eine Markierung zB. ein x oder y oder irgend etwas.
In Spalte C und E Stehen jeweils dia Zahlen von 1 bis 52, welche die Kalenderwochen darstellen sollen.
1. Im ersten Schritt sollen alle Namen aus B:B, die eine Markierung in der Spalte A haben, Kopiert werden.
2. Die kopierten Namen sollen nun zunächst in Spalte D in der gleichen Reienfolge wie in Spalte B, also unsortiert, untereinander so oft kopiert werden, bis die KW 52 erreich ist.
Danach soll die Liste in der Spalte F fortgesetzt werden, bis wiederum die 52. KW erreicht wurde.
Vielen Dank für eure Mühe.
Norbert aus Rostock
https://www.herber.de/bbs/user/109729.xlsx

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Liste kopieren und mehrmals übeinander einfügen
26.11.2016 08:27:40
Bastian
Kann das sein das du in Spalte F den Namen "D" vergessen hast ? =D
Also hier das sollte gehen du kannst das so weiter machen wie du willst mit den Jahren nach rechts
ab 2020 wirst du sehen das es dort 53 Kws sind.
Gruß Basti
Option Base 1
Sub KWs_Und_Namen_erstellen()
Dim Lastcell As Long, Lastcolumn As Long, r As Long, x As Long, MaxKws As Long, KW As Long
ReDim A(1)
r = 3
c = 3
With ThisWorkbook.Worksheets("Tabelle1") ' Hier bitte Tabellen Name anpassen
Lastcell = .Cells(.Rows.Count, 1).End(xlUp).Row
Lastcolumn = .Cells(1, .Columns.Count).End(xlToLeft).Column
' Namen mit x in Array(A) laden
For r = r To Lastcell
If Cells(r, 1) = "x" Then
x = x + 1
ReDim Preserve A(x)
A(x) = Cells(r, 2)
End If
Next
'Schleife der Jahre
For c = c To Lastcolumn Step 2
MaxKws = AnzWo(.Cells(1, c).Value)
'Anzahl an Kws in dem Jahr ermitteln
For KW = 1 To MaxKws
If y = UBound(A, 1) Then y = 0
y = y + 1
.Cells(KW + 2, c) = KW
.Cells(KW + 2, c + 1) = A(y)
Next
Next
End With
End Sub
Function AnzWo(Jahr As Integer) 'Anzahl an Kws in dem Jahr ermitteln Function
Dim DieWochen As Integer, i As Integer
For i = 31 To 28 Step -1
DieWochen = (4 + DateSerial(Jahr, 12, i) - Weekday(DateSerial(Jahr, 12, i), 2) -  _
DateSerial(Year(4 + DateSerial(Jahr, 12, i) - Weekday(DateSerial(Jahr, 12, i), 2)), 1, -6)) \ 7
If DieWochen > 1 Then Exit For
Next
AnzWo = DieWochen
End Function

Anzeige
AW: Liste kopieren und mehrmals übeinander einfügen
27.11.2016 11:19:51
Norbert
Hallo Basti,
natürlich war das mit dem "D" ein Fehler von mir.
Dein Code ist echt super, ich bin begeistert.
Wie müsste der Code aussehen, wenn die Daten von einem Anderen Tabellenblatt gehohlt werden sollen?
Wie auch immer. Vielen, vielen Dank für Deine Mühe und diesen Supercode.
Gruß Norbert
AW: Liste kopieren und mehrmals übeinander einfügen
28.11.2016 15:41:56
Bastian
Hier ein Bsp.
Gruß Basti

Die Datei https://www.herber.de/bbs/user/109762.xlsm wurde aus Datenschutzgründen gelöscht


AW: Liste kopieren und mehrmals übeinander einfügen
01.12.2016 20:19:24
Norbert
Hallo Basti,
vielen Dank.
Besonders gut ist auch, dass man die Jahre einstellen kann.
Aber ich habe da noch ein Problem.
Es wird auch eine Zelle neben ein "X" mit aufgelistet, wenn dort gar kein Name steht. Kann der Code die Zellen ausfiltern?
Ich habe versucht, Deinen Code zu verstehen, aber da ich in VBA nicht so firm bin war das nur mit mäßigen Erfolg. Vielleicht bekomme ich das irgend wann mal hin.
Ich sende Dir noch mal eine Tabelle, auf der zusehen ist, wie ich mir das immer per Hand zusammen gestellt habe.
Gruß Norbert
https://www.herber.de/bbs/user/109843.xlsm
Anzeige
AW: Liste kopieren und mehrmals übeinander einfügen
01.12.2016 20:57:23
Bastian
Hey Norbert Guck ma So
Gruß Basti
Option Base 1
Sub KWs_Und_Namen_erstellen()
Dim Lastcell As Long, Lastcolumn As Long, r As Long, x As Long, MaxKws As Long, KW As Long
Dim NewS As Worksheet
ReDim A(1)
r = 3
cc = 1
Set NewS = ThisWorkbook.Worksheets("Tabelle2")
NewS.Cells.ClearContents
With ThisWorkbook.Worksheets("Tabelle1") ' Hier bitte Tabellen Name anpassen
Lastcell = .Cells(.Rows.Count, 1).End(xlUp).Row
Lastcolumn = .Cells(1, .Columns.Count).End(xlToLeft).Column
' Namen mit x in Array(A) laden
For r = r To Lastcell
If .Cells(r, 1) = "x" And .Cells(r, 2)  vbNullString Then
x = x + 1
ReDim Preserve A(x)
A(x) = .Cells(r, 2)
End If
Next
'Schleife der Jahre
For c = .Cells(2, 3) To .Cells(2, 4)
NewS.Cells(1, cc) = c
NewS.Cells(2, cc) = "KWs"
NewS.Cells(2, cc + 1) = "Namen"
MaxKws = AnzWo(CStr(c))
'Anzahl an Kws in dem Jahr ermitteln
For KW = 1 To MaxKws
If y = UBound(A, 1) Then y = 0
y = y + 1
NewS.Cells(KW + 2, cc) = KW
NewS.Cells(KW + 2, cc + 1) = A(y)
Next
cc = cc + 2
Next
End With
End Sub
Function AnzWo(Jahr As Integer) 'Anzahl an Kws in dem Jahr ermitteln Function
Dim DieWochen As Integer, i As Integer
For i = 31 To 28 Step -1
DieWochen = (4 + DateSerial(Jahr, 12, i) - Weekday(DateSerial(Jahr, 12, i), 2) - _
DateSerial(Year(4 + DateSerial(Jahr, 12, i) - Weekday(DateSerial(Jahr, 12, i), 2)), 1, -6)) \ 7
If DieWochen > 1 Then Exit For
Next
AnzWo = DieWochen
End Function

Anzeige
AW: Liste kopieren und mehrmals übeinander einfügen
03.12.2016 11:58:08
Norbert
Hallo Basti,
zeige mir bitte noch wie ich neben den KWs drei und neben den Namen eine Leerspalte einfügen kann.
Danke
Gruß Norbert
Liste kopieren und mehrmals übeinander einfügen
05.12.2016 08:16:01
baschti007
So ?
Gruß Basti
Option Base 1
Sub KWs_Und_Namen_erstellen()
Dim Lastcell As Long, Lastcolumn As Long, r As Long, x As Long, MaxKws As Long, KW As Long
Dim NewS As Worksheet
ReDim A(1)
r = 3
cc = 1
Set NewS = ThisWorkbook.Worksheets("Tabelle2")
NewS.Cells.ClearContents
With ThisWorkbook.Worksheets("Tabelle1") ' Hier bitte Tabellen Name anpassen
Lastcell = .Cells(.Rows.Count, 1).End(xlUp).Row
Lastcolumn = .Cells(1, .Columns.Count).End(xlToLeft).Column
' Namen mit x in Array(A) laden
For r = r To Lastcell
If .Cells(r, 1) = "x" And .Cells(r, 2)  vbNullString Then
x = x + 1
ReDim Preserve A(x)
A(x) = .Cells(r, 2)
End If
Next
'Schleife der Jahre
For c = .Cells(2, 3) To .Cells(2, 4)
NewS.Cells(1, cc) = c
NewS.Cells(2, cc) = "KWs"
NewS.Cells(2, cc + 4) = "Namen"
MaxKws = AnzWo(CStr(c))
'Anzahl an Kws in dem Jahr ermitteln
For KW = 1 To MaxKws
If y = UBound(A, 1) Then y = 0
y = y + 1
NewS.Cells(KW + 2, cc) = KW
NewS.Cells(KW + 2, cc + 4) = A(y)
Next
cc = cc + 6
Next
End With
End Sub

Anzeige
AW: Liste kopieren und mehrmals übeinander einfügen
05.12.2016 16:49:43
Norbert
Ja Basti, genau so.
Noch mal vielen Dank für Deine Hilfe, das war super.
Den Rest werde ich mir in die neuen Spalten mit einen Code reinschreiben lassen.
Gruß Norbert

348 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige