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

Wenn Zelle gefüllt, dann Zeile duplizieren+anpasse

Wenn Zelle gefüllt, dann Zeile duplizieren+anpasse
05.02.2014 10:14:27
Stefan
Hallo zusammen,
ich habe gerade das Problem, dass ich eine riesige Tabelle anpassen muss. In jeder Zeile ist ein Name und daneben in den Spalten mögliche Eigenschaften, die dem Namen zugeordnet sind. Ganz rechts (z.B. Spalten P-S) sind Spalten, von denen manchmal keine, manchmal aber mehrere markiert sind (mal ist nur Spalte P markiert, mal P und Q, mal R+S...). Ich brauche nun eine Aufspaltung dieser Zeilen, wo mehrere der Spalten P-S markiert sind, sodass nachher für jede dieser Markierungen eine eigenständige Zeile ensteht (mit allen jeweiligen anderen Eintragungen in der Zeile) - sinnvollerweise in einem neuen Tabellenblatt. Gleichzeitig muss in einer Spalte (z.B. M) eine Markierung eingefügt werden, welche der Spalten P-S markiert war (z.B. durch "P"). Die Zeilen, in denen keine der Spalten markiert waren, sollen einfach normal angefügt werden. Die aufgespaltenen Zeilen sollten möglichst nacheinanderliegen und nicht ganz unten angefügt werden.
Ich hoffe es wird klar, was gemeint ist. Ich habe leider bisher wenig Ahnung von VBA und den passenden Befehlen. Vielleicht kann mir ja jemand helfen.
Viele Grüße

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wenn Zelle gefüllt, dann Zeile duplizieren+anpasse
05.02.2014 12:05:09
fcs
Hallo Stefan,
hier ein entsprechendes Makro, dass du ggf. noch geringfügig anpassen musst.
Gruß
Franz
Sub CodeStefan()
Dim wks As Worksheet, wksZ As Worksheet
Dim Zeile As Long, ZeileZ As Long
Dim Spalte As Long, Spalte_M As Long
Dim rngCopy As Range, rngCheck As Range
Set wks = ActiveSheet
ActiveWorkbook.Worksheets.Add after:=wks
Set wksZ = ActiveSheet
Spalte_M = 20 'Spalte T - Spalte für Eintrag der Markierung/Spalte
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
End With
With wks
'Titelzeile(n) kopieren
ZeileZ = 1
Set rngCopy = .Range(.Cells(1, 1), .Cells(1, 19))
rngCopy.Copy
wksZ.Cells(ZeileZ, 1).PasteSpecial Paste:=xlPasteColumnWidths 'nur Excel 2007 und neuer
wksZ.Cells(ZeileZ, 1).PasteSpecial Paste:=xlPasteAll
wksZ.Cells(ZeileZ, Spalte_M).Value = "Spalte"
ZeileZ = ZeileZ + rngCopy.Rows.Count
For Zeile = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
'jeweils zu kopierende Spalten in Zeile, hier A bis S
Set rngCopy = .Range(.Cells(Zeile, 1), .Cells(Zeile, 19))
'Bereich mit den zu prüfenden Spalten in Zeile - hier  P bis S
Set rngCheck = .Range(.Cells(Zeile, 16), .Cells(Zeile, 19))
'Prüfen, ob Einträge im zu prüfenden Bereich
If Application.WorksheetFunction.CountA(rngCheck) = 0 Then
rngCopy.Copy Destination:=wksZ.Cells(ZeileZ, 1)
ZeileZ = ZeileZ + 1
Else
For Spalte = 1 To rngCheck.Columns.Count
If rngCheck.Cells(1, Spalte)  "" Then
rngCopy.Copy Destination:=wksZ.Cells(ZeileZ, 1)
Select Case Spalte
Case 1: wksZ.Cells(ZeileZ, Spalte_M) = "P"
Case 2: wksZ.Cells(ZeileZ, Spalte_M) = "Q"
Case 3: wksZ.Cells(ZeileZ, Spalte_M) = "R"
Case 4: wksZ.Cells(ZeileZ, Spalte_M) = "S"
End Select
ZeileZ = ZeileZ + 1
End If
Next
End If
Next Zeile
End With
With Application
.ScreenUpdating = True
.Calculation = xlCalculationAutomatic
End With
End Sub

Anzeige
AW: Wenn Zelle gefüllt, dann Zeile duplizieren+anpasse
05.02.2014 15:14:10
Stefan
Gigantisch - vielen, vielen Dank. Habs auf mein Problem anpassen können und es läuft perfekt! Danke für die schnelle Hilfe!

AW: Wenn Zelle gefüllt, dann Zeile duplizieren+anpasse
11.02.2014 15:52:14
Stefan
Hallo nochmal,
mittlerweile hat sich in der Problemstellung etwas kleines geändert. In den Spalten P-S stehen nun Zahlen (z.B. in Spalte P eine 3 und Q eine 2). Ist es möglich den bestehenden Code anzupassen, sodass nun insgesamt soviele Zeilen entstehen, wie die Zahl angibt und gleichzeitig in der Spalte B einen Text um 1/3, 2/3 und 3/3 zu erweitern? In Spalte-M soll weiterhin die Markierungsspalte [hier für 3 Zeilen (Name 1/3, Name 2/3, Name 3/3) ein P und für 2 neue Zeilen (Name 1/2, Name 2/2) ein Q] stehen?
Vielen Dank!
Anzeige

394 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige