Wählen Sie jede n-te Zeile in Excel aus

15

Ich habe eine Excel-Tabelle mit Tausenden von Zeilen. Ich möchte jede 7. Zeile aus dieser Tabelle auswählen. (Mit "auswählen" meine ich, alle anderen Zeilen löschen oder die ausgewählten Zeilen in ein neues Arbeitsblatt kopieren.)

Wie geht das am einfachsten in Excel 2003?

Siehe auch: Markieren Sie jede n-te Zeile in Numbers

Patrick McElhaney
quelle

Antworten:

19
  1. Eine Spalte einfügen
  2. In der ersten Zeile Formel einfügen = MOD (ROW (), 7)
  3. Abschreiben
  4. Kopieren / Einfügen von Spezialwerten
  5. Daten / Filtern Sie die gewünschten heraus (0 oder 6, wahrscheinlich)
  6. Löschen Sie die restlichen Zeilen. Filter entfernen Spalte löschen
Todd Pierzina
quelle
Keine schlechte Lösung. Ich mag meine Makros, das ist also meine erste Wahl, aber dies könnte auch mit ein wenig Aufwand funktionieren.
2
= MOD (ROW (), 7) benötigen Sie das zweite Argument.
dkusleika
3

Persönlich würde ich ein Makro aufzeichnen, um die ersten drei oder vier Zeilen (natürlich in 7-Zeilen-Schritten) zu erstellen und die Zeilen auf ein neues Blatt zu kopieren. Dann würde ich das Makro so bearbeiten, dass eine Schleife verwendet wird, die bis zur Anzahl der aufgefüllten Zeilen im Arbeitsblatt mit einem Schritt von 7 zählt.

Pseudocode-Beispiel:

Dim i as Integer

For i = 1 To 1000 Step 7
    'Add current row to selection
    ...
Next i

'Copy the selected rows to new sheet
...

quelle
Wenn Sie ein Makro verwenden, versuchen Sie, <code> <pre> Sub delrows () zurück zu gehen (6) .EntireRow.Delete Next i End Sub </ pre> </ code> Wenn Sie Zeilen löschen, wird die Schleife nicht verrückt.
dkusleika
Er löscht nicht, sondern fügt nur eine Zeile zu einem Bereichsobjekt hinzu (impliziert im Kommentar)
DaveParillo
1
Er sagt: "Mit Auswahl meine ich alle anderen Zeilen löschen ..."
dkusleika
3

Wirklich gerade mit der Fertigstellung der Idee hat Randolph Potter angefangen ...

Ich glaube nicht, dass Sie jemals mit einer Aufnahme darauf kommen könnten. Die Makroaufnahme ist eine gute Möglichkeit, sich mit dem Excel-Objektmodell vertraut zu machen, aber keine sehr gute Möglichkeit, wiederverwendbare Funktionen zu schreiben.

Option Explicit

'A simple test that copies every 7th row from the active sheet to a new sheet.
Sub SimpleTest()
    Dim r As Range
    Dim ws As Worksheet

    Set r = GetEveryNthRow(7)
    If Not r Is Nothing Then
        Set ws = Worksheets.Add(Before:=Sheets(1))

        r.Copy ws.Range("A1")
    Else
        MsgBox "Nothing came back from GetEveryNthRow"
    End If
    Set ws = Nothing
    Set r = Nothing
End Sub

'
Function GetEveryNthRow(ByVal NthRow As Long) As Range
    Dim keepRows As Range
    Dim r As Range

    If NthRow > 0 Then
        Set keepRows = Rows(1)
        For Each r In ActiveSheet.UsedRange.Rows
            If (r.Row Mod NthRow) = 0 Then
                Set keepRows = Union(keepRows, Rows(r.Row))
            End If
        Next r
        Set GetEveryNthRow = keepRows
    Else
        MsgBox "The row multiple provided must be greater than 0"
    End If

    Set keepRows = Nothing
End Function
DaveParillo
quelle
Mit Ihnen auf dem wiederverwendbaren Begriff.
3
  1. Eine Spalte einfügen.
  2. In der ersten Zeile dort einfügen 1.
  3. Mit Ctrlgedrückter Taste nach unten in Zeile 7 kopieren .
  4. Nimm diesen Block und mache dasselbe noch einmal bis zum Ende.
  5. Daten / Filtern Sie diejenigen, die Sie nicht wollen und löschen Sie diese.
  6. Löschen Sie die eingefügte Spalte.
pnuts
quelle
Danke für die Antwort. Können Sie Schritt 3 näher erläutern? Wollen Sie die Strg-Taste gedrückt halten, während Sie die Maus ziehen? Ich habe momentan keinen Zugriff auf Excel 2003, kann also nicht testen.
Patrick McElhaney
1

Um jede 7. Zeile auszuwählen, gibt es einen EINFACHEREN WEG: In den ersten 7 Zeilen Ihrer Spalte, aber in einer (der ersten), schreiben Sie etwas hinein. Dann markieren Sie diese 7 Zeilen und kopieren sie in die gesamte Spalte. Nun müssen Sie nur noch zu SELECT-> GO TO SPECIAL-> select BLANKS-> OK gehen. Sie haben jeweils 7 Zeilen eine Auswahl. Jetzt können Sie tun, was Sie wollen. Genießen!

Davide Di Grumo
quelle
0

für jede 7. reihe,

  1. Eine Spalte einfügen
  2. In Zeile 1 bis Zeile 6 setzen Sie ein "X"
  3. in zeile 7 setze 1,
  4. Füllen Sie Ihre Spalte automatisch mit diesem Block
  5. Verwenden Sie in dieser Spalte "Duplikate entfernen"
  6. Löschen Sie die 1. Zeile (mit dem 1. "X").
  7. Hinzugefügte Spalte löschen
Ponch
quelle
Willkommen bei Super User. Dies sind im Wesentlichen die in der akzeptierten Antwort vorgeschlagenen Methoden und die von pnuts, nur mehr Arbeit (und destruktiv). Es ist nicht klar, was es dazu beiträgt.
Fixer1234
Es wird nur ein anderes Menü verwendet, das aus meiner Sicht weder wirklich mehr Arbeit noch destruktiver ist als die ursprünglichen Posteranforderungen ("Alle anderen Zeilen löschen").
Ponch