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

Zeilen selektiv kopieren und löschen

Zeilen selektiv kopieren und löschen
17.11.2008 10:11:00
stelud
Hallo,
folgendes Beispiel mit 5 Zeilen :
A B C D
12 12 555 2222
13 13 555 2222
14 14 555 2222
24 24 600 2244
25 25 555 2222
28 28 555 2222
29 29 555 2222
30 30 555 2222
34 34 600 2244
39 39 555 2222
Ich möchte nun alle Zeilen, bei denen der Inhalt der Zelle in Spalte A einen der folgenden
Werte aufweist (12, 14, 28, 30, 39) in ein neues Blatt kopieren und im aktuellen Blatt löschen.
Kann ich das über ein Makro lösen ?
Gruß, Stefan

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen selektiv kopieren und löschen
17.11.2008 10:30:00
Tino
Hallo,
hier mal ein Vorschlag.
Option Explicit

Sub test()
Dim lngRow As Long, lngA As Long
Dim i As Long

lngRow = Cells(Rows.Count, 1).End(xlUp).Row
 
 With Application
  .ScreenUpdating = False
    For lngA = lngRow To 1 Step -1
     If "12;14;28;30;39" Like "*" & Cells(lngA, 1) & "*" Then
      i = i + 1
      Rows(Cells(lngA, 1).Row).Copy Sheets("Tabelle2").Rows(i)
      Rows(Cells(lngA, 1).Row).Delete
     End If
    Next lngA
   .ScreenUpdating = True
 End With

End Sub


Sollten es mehrere 1000 Zeilen sein, müsste man sich eine andere Lösung überlegen.
Gruß Tino

Anzeige
AW: Zeilen selektiv kopieren und löschen
17.11.2008 10:35:13
Rudi
Hallo Tino,

Rows(Cells(lngA, 1).Row).Copy


Unsinnig! Ergibt doch lngA. Ergo: Rows(lngA).Copy
Gruß
Rudi

überredet ;-) owT.
17.11.2008 11:26:00
Tino
AW: Zeilen selektiv kopieren und löschen
17.11.2008 10:31:54
Rudi
Hallo,

Sub tt()
Dim i As Long
Application.ScreenUpdating = False
With Sheets(1)
For i = .Cells(Rows.Count, 1).End(xlUp) To 1 Step -1
Select Case .Cells(i, 1)
Case 12, 14, 28, 30, 39
Cells(i, 1).Resize(, 4).Copy _
Sheets(2).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
.Rows(i).Delete
End Select
Next
End With
Application.ScreenUpdating = True
End Sub


Gruß
Rudi

Anzeige
ersatz, erster Code geht nicht!!!!!!
17.11.2008 10:33:56
Tino
Hallo,
vergiss den vorherigen Code, der Funktioniert nicht sauber.
Option Explicit

Sub test()
Dim lngRow As Long, lngA As Long
Dim i As Long

lngRow = Cells(Rows.Count, 1).End(xlUp).Row
 
 With Application
  .ScreenUpdating = False
    For lngA = lngRow To 1 Step -1
     
     Select Case Cells(lngA, 1)
        Case 12, 14, 28, 30, 39
         i = i + 1
         Rows(Cells(lngA, 1).Row).Copy Sheets("Tabelle2").Rows(i)
         Rows(Cells(lngA, 1).Row).Delete
     End Select
    
    Next lngA
   .ScreenUpdating = True
 End With

End Sub


Gruß Tino

Anzeige
etwas schneller
17.11.2008 11:38:00
Tino
Hallo,
mit einer Hilfsspalte kann man dies etwas beschleunigen.
Option Explicit

Sub Test2()
Dim tempBereich As Range, Bereich As Range
 Application.ScreenUpdating = False
    Set tempBereich = Range("A1", Cells(Rows.Count, 1).End(xlUp)).Offset(0, 4)
    
    tempBereich.FormulaR1C1 = "=IF(OR(RC1=12,RC1=14,RC1=28,RC1=30,RC1=39),TRUE,"""")"
    Set Bereich = tempBereich.SpecialCells(xlCellTypeFormulas, 4).EntireRow
    
    tempBereich.Clear
    
    Bereich.Copy Sheets("Tabelle2").Range("A1")
    
    Bereich.Delete
 Application.ScreenUpdating = True
End Sub


Gruß Tino

Anzeige
AW: Zeilen selektiv kopieren und löschen
17.11.2008 10:44:00
JogyB
Hallo.
Probier es mal so:

Sub copyAndDelete()
Dim i As Long
Dim schreibZeile As Long
Dim quellWsh As Worksheet
Dim zielWsh As Worksheet
Dim copyRows() As Long
Application.ScreenUpdating = False
Set quellWsh = ActiveSheet
Set zielWsh = ThisWorkbook.Sheets.Add(, ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
ReDim copyRows(0)
' Zeilen finden und kopieren
For i = 1 To quellWsh.Cells(Rows.Count, 1).End(xlUp).Row
Select Case quellWsh.Cells(i, 1).Value
Case 12, 14, 28, 30, 39
schreibZeile = schreibZeile + 1
quellWsh.Rows(i).Copy zielWsh.Cells(schreibZeile, 1)
ReDim Preserve copyRows(UBound(copyRows) + 1)
copyRows(UBound(copyRows)) = i
End Select
Next
' Falls etwas gefunden
If UBound(copyRows) > 0 Then
' Zeilen löschen
For i = UBound(copyRows) To 1 Step -1
quellWsh.Rows(copyRows(i)).Delete
Next
' Ansonsten das angelegte Sheet wieder weg
Else
Application.DisplayAlerts = False
zielWsh.Delete
Application.DisplayAlerts = True
quellWsh.Activate
End If
Application.ScreenUpdating = True
End Sub


Bei Fragen einfach nochmal melden.
Gruss, Jogy

Anzeige
AW: Zeilen selektiv kopieren und löschen
17.11.2008 11:01:23
JogyB
Oder alternativ so:

Sub copyAndDelete2()
Dim i As Long
Dim quellWsh As Worksheet
Dim zielWsh As Worksheet
Application.ScreenUpdating = False
Set quellWsh = ActiveSheet
Set zielWsh = ThisWorkbook.Sheets.Add(, ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
' Zeilen finden, kopieren und löschen
For i = quellWsh.Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
Select Case quellWsh.Cells(i, 1).Value
Case 12, 14, 28, 30, 39
zielWsh.Rows(1).Insert shift:=xlDown
quellWsh.Rows(i).Copy zielWsh.Cells(1, 1)
quellWsh.Rows(i).Delete
End Select
Next
' Falls nichts gefunden, das neue Sheet wieder weg
If zielWsh.UsedRange.Address = "$A$1" Then
Application.DisplayAlerts = False
zielWsh.Delete
Application.DisplayAlerts = True
quellWsh.Activate
End If
Application.ScreenUpdating = True
End Sub


Die anderen Beispiele gehen natürlich auch, bei meinen bleibt jedoch die Anordnung der Zeilen erhalten.
Gruss, Jogy

Anzeige
AW: Zeilen selektiv kopieren und löschen
17.11.2008 11:14:00
Rudi
Hallo,
noch ne Alternative:

Sub tt()
Dim i As Long, rngCopy As Range
Application.ScreenUpdating = False
With Sheets(1)
For i = .Cells(Rows.Count, 1).End(xlUp) To 1 Step -1
Select Case .Cells(i, 1)
Case 12, 14, 28, 30, 39
If rngCopy Is Nothing Then
Set rngCopy = .Cells(i, 1)
Else
Set rngCopy = Union(rngCopy, .Cells(i, 1))
End If
End Select
Next
End With
With rngCopy.EntireRow
.Copy Sheets(2).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
.Delete
End With
Application.ScreenUpdating = True
End Sub


Gruß
Rudi

AW: Zeilen selektiv kopieren und löschen
17.11.2008 12:55:00
stelud
Hallo,
an alle herzlichen Dank - mit euren Anregungen kann ich das Problem lösen !!
Gruß, Stefan
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige