PDA

Vollständige Version anzeigen : Textwiederholung und Zeilen durch Wert ersetzen


Sampa
01.08.2012, 15:36
Guten Tag.

Ich habe folgendes Problem in Excel 2010:


1. Tabellenblatt:
Hat 1 Spalte und 150 Zeilen. In Jeder Zeile kann ein anderer Wert stehen: A/B/C/D…

Dieses Tabellenblatt bzw. die Zeilen werden täglich ausgefüllt. An Tag 1 evtl. 25 Zeilen, an Tag 2 evtl. 90 Zeilen…



2. Tabellenblatt:
Hat 1 Spalte und X Zeilen. Allerdings gehören immer circa 30 Zeilen zusammen (wie ein Text). Diese wiederholen sich immer wieder nach diesen 30 Zeilen.


Zeile 15 dieses Textes soll durch den ersten Wert (A) ersetzt werden. Dem entsprechend soll fortlaufend Zeile 45 mit dem zweiten Wert (B) ersetzt werden usw.


Das Problem:
Es kann sein, dass nur 10 Zeilen (also 10 Werte auf Tabellenblatt 1) sind. Nun soll also auf Tabellenblatt 2 nur diese 10 Werte übernommen werden.
Hierzu sollen dann nicht 150*30 Zeilen stehen (und die letzten 140 Texte mit je 30 Zeilen sind leer), sondern (da nur 10 Werte eingetragen sind) 10 mal die 30 Zeilen erscheinen mit jeweils dem übernommenen Wert


Wenn irgendwann mal 50 Zeilen eingetragen sind, sollen eben der Text (mit den 30 Zeilen) 50 mal erscheinen und jeweils die 15. Zeile durch den bestimmten Wert aus Tabellenblatt 1 ersetzt werden.


Hoffe ich konnte es verständlich erklären…

Kann mir hierbei jemand bei diesem Problem behilflich sein, bzw. hat jemand eine Idee?


Vielen Dank und mfG,

Sampa

EarlFred
01.08.2012, 16:25
Hallo Sampa,

habe ich das so richtig verstanden?
Option Explicit

Sub Sampa()
Dim lngAnz As Long, i As Long

'Anzahl Einträge in Tabelle1:
lngAnz = Worksheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Row
'alternativ:
'lngAnz = Application.CountA(Worksheets("Tabelle1").Columns(1))


With Worksheets("Tabelle2")
'Zeile 31 bis Ende löschen:
.Range("A31:A" & Rows.Count).ClearContents

'Spalte A, Zeilen 1 bis 30 so oft wiederholen, wie Einträge in Tabelle1:
.Range("A1:A30").AutoFill _
Destination:=.Range("A1:A" & 30 * lngAnz), _
Type:=xlFillCopy

'Einträge aus Tabelle1 in jeweils jede 30. Zeile, beginnend ab Zeile 15:
For i = 1 To lngAnz
.Cells((i - 1) * 30 + 15, 1) = Worksheets("Tabelle1").Cells(i, 1)
Next i
End With
End Sub

Mindestens die ersten 30 Zeilen in Tabelle2, die es zu wiederholen gilt, sind vorher einzutragen!

Grüße
EarlFred

Sampa
01.08.2012, 16:40
Du bist ein Magier!

Danke, danke, danke!!!