2016-07-16 15 views
0

Ich habe eine Reihe von Daten, die automatisch gefiltert wurden, um bestimmte Kriterien zu erfüllen. Diese Teilmenge der Daten, die ich in ein neues Blatt einfügen möchte, ist also von selbst und dann aus dem Hauptblatt zu entfernen.Erste Zeile entfernen Von Auswahl VBA

Ich habe das meiste davon, bis auf den letzten Teil, entfernt es aus dem Hauptblatt. Das Hauptproblem ist, dass ich die Kopfzeile des Hauptblattes behalten muss, und da diese Ergebnisse automatisch gefiltert werden, kann ich nicht darauf zählen, dass die zweite Zeile 2 ist. Ich habe eine Reihe verschiedener Dinge ausprobiert, die neuesten Versatz zu der zweiten Zeile, nachdem ich kopiert habe, was ich auf das zweite Blatt brauche. Hier ist, was ich bisher (und ja, sind einige Dinge für den Test auf Kommentar, ich brauche nicht wertvolle Sekunden sein mit etwas zu tun, ich Werke kennen)

Sub copyToN2r() 
' 
' copyton2r Macro 
' 
' 
Dim Lr As Long 
Dim start As Long 

Lr = Range("A" & Rows.Count).End(xlUp).Row 
'Range("A" & Lr).SpecialCells(xlCellTypeVisible).Copy 
Destination:=Sheets("N2R Register").Range("A1") 
'Range("A1:F1").Copy 
Range("A1").Offset(1, 0).SpecialCells(xlCellTypeVisible).Clear 
'Range("A1").Paste 
End Sub 

Antwort

0

Sehen Sie, wenn das Snippet unten für Sie arbeiten - Kommentare inline:

Sub copyToNewSheet() 

    ' data that will be copied 
    Dim dataWithHeader As Range 
    Dim dataOnly As Range 

    Set dataWithHeader = [Sheet3!a1].CurrentRegion 
    With dataWithHeader 
     Set dataOnly = .Offset(1, 0).Resize(.Rows.Count - 1, .Columns.Count) 
    End With 

    ' so now you copy data and the header 
    dataWithHeader.Copy [Sheet4!a1] 

    ' and delete copied visible rows 
    ' you can't iterate throw rows and delete those rows at the same time 
    ' as it will cause issues. We first need to store all the ranges we'll delete 
    ' in a collection -- and then iterate through that collection 
    Dim rw As Range 
    Dim cRowsToDel As New Collection 
    For Each rw In dataOnly.SpecialCells(xlCellTypeVisible).Rows 
     cRowsToDel.Add rw 
    Next 
    For Each rw In cRowsToDel 
     rw.Delete xlShiftUp 
    Next 

    ' remove autofilter to see the results 
    If [Sheet3].AutoFilterMode Then [Sheet3].ShowAllData 
End Sub 

Testdatensatz mit Spaltenüberschriften und Zeilen 2 und 3 herausgefiltert (in A1 einfügen):

col1 col2 col3 
data11 data21 data31 
data12 data22 data32 
data13 data23 data33 
data14 data24 data34 
data15 data25 data35 
+0

Hey Logan, Vielen Dank für das, es in seiner eigenen Arbeitsmappe funktioniert mit deinen Testdaten. Wie auch immer, wenn ich es in mein Buch verschoben und die Blattverweise geändert habe, bekomme ich eine "copy Method of Range Klasse fehlgeschlagen Fehler 1004. Irgendeine Idee auf Ursache? – David

+0

@David Es ist sehr wahrscheinlich, dass" [Sheet3! A1] .CurrentRegion 'Finden Sie die Datentabelle nicht richtig. Versuchen Sie, den Bereich explizit anzugeben und sehen Sie, ob es funktioniert - zum Beispiel' [Sheet3! a1: f40] ' –

+0

Logan, danke nochmal, es war eigentlich die Sheet4-Zeile, die mir Probleme machte , aber ich habe stattdessen den Namen des Blattes in Sheet2 geändert und es funktioniert jetzt gut. Danke für die Hilfe! – David

Verwandte Themen