AW: Bereich zwischen 2 Worten finden und kopieren
17.03.2008 15:26:35
fcs
Hallo mathias,
hier mein Makrovorschlag
Da die verbundene Zellen die Arbeit erschweren werden diese vom Makro in Einzelzellen aufgelöst.
Gruß
Franz
Sub Aufteilen()
Dim wb As Workbook
Dim wsC As Worksheet, wsA As Worksheet, wsI As Worksheet
Dim Spalte As Long
Dim Zeile1 As Long, Zeile2 As Long, Zeile3 As Long, Zelle As Range
Set wb = ActiveWorkbook
Set wsA = wb.Worksheets("Active")
Set wsC = wb.Worksheets("Completed")
Set wsI = wb.Worksheets("Implemented")
wsA.UsedRange.MergeCells = False 'Verbundene Zellen auflösen
'Titelzeilen kopieren
wsA.Range(wsA.Rows(1), wsA.Rows(2)).Copy Destination:=wsC.Cells(1, 1)
wsA.Range(wsA.Rows(1), wsA.Rows(2)).Copy Destination:=wsI.Cells(1, 1)
Application.CutCopyMode = False
'SPaltenbreiten übertragen
For Spalte = 1 To 9
wsC.Columns(Spalte).ColumnWidth = wsA.Columns(Spalte).ColumnWidth
wsI.Columns(Spalte).ColumnWidth = wsA.Columns(Spalte).ColumnWidth
Next
'Implemented übertragen
Set Zelle = wsA.Columns(1).Find(what:="Implemented", LookIn:=xlValues, lookat:=xlPart)
If Zelle Is Nothing Then
MsgBox "Implemented nicht gefunden"
Else
Zeile1 = Zelle.Row
Set Zelle = wsA.Columns(1).Find(what:="Completed", LookIn:=xlValues, lookat:=xlPart)
If Zelle Is Nothing Then
MsgBox "Completed nicht gefunden"
Else
Zeile2 = Zelle.Row
wsA.Range(wsA.Rows(Zeile1 + 1), wsA.Rows(Zeile2 - 1)).Copy _
Destination:=wsI.Cells(3, 1)
End If
End If
'Completed übertragen
Set Zelle = wsA.Columns(1).Find(what:="Completed", LookIn:=xlValues, lookat:=xlPart)
If Zelle Is Nothing Then
MsgBox "Completed nicht gefunden"
Else
Zeile2 = Zelle.Row
Zeile3 = wsA.Columns.Cells(wsA.Rows.Count, 1).End(xlUp).Row
wsA.Range(wsA.Rows(Zeile2 + 1), wsA.Rows(Zeile3)).Copy _
Destination:=wsC.Cells(3, 1)
End If
If Zeile1 > 0 And Zeile3 > 0 Then
'Zeilen von Implemented und Completed löschen
wsA.Range(wsA.Rows(Zeile1), wsA.Rows(Zeile3)).Delete shift:=xlShiftUp
'Zeile mit Active löschen
wsA.Rows(3).Delete shift:=xlShiftUp
End If
End Sub