Pilih setiap baris ke-n di Excel

15

Saya memiliki spreadsheet Excel dengan ribuan baris. Saya ingin memilih setiap baris ke-7 dari spreadsheet itu. (Dengan "pilih," maksud saya menghapus semua baris lain, atau salin baris yang dipilih ke lembar kerja baru.)

Apa cara termudah untuk melakukannya di Excel 2003?

Lihat juga: Pilih setiap baris ke-n dalam Angka

Patrick McElhaney
sumber

Jawaban:

19
  1. Sisipkan kolom
  2. Di baris pertama, masukkan rumus = MOD (ROW (), 7)
  3. Salin ke bawah
  4. Salin / rekatkan nilai / khusus
  5. Data / Saring yang Anda inginkan (0 atau 6, mungkin)
  6. Hapus sisa baris Hapus kolom Hapus filter
Todd Pierzina
sumber
Bukan solusi yang buruk. Saya suka makro saya jadi itu pilihan pertama saya, tetapi ini juga bisa bekerja dengan sedikit usaha.
2
= MOD (ROW (), 7) Anda membutuhkan argumen kedua.
dkusleika
3

Secara pribadi, saya akan merekam makro untuk melakukan tiga atau empat baris pertama (dengan penambahan 7-baris, tentu saja), dan menyalin garis ke lembar baru. Lalu saya mengedit makro untuk menggunakan loop yang menghitung jumlah baris yang terisi di sheet, dengan langkah 7.

Contoh kode semu:

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
...

sumber
Jika Anda benar-benar menggunakan makro, coba mundur <code> <pre> Tundukan sub () Dim i Long For i = 988 To 1 Step -7 Sheet1.Cells (i, 1) .Offset (1, 0) .Resize (6) .EntireRow.Delete Next i End Sub </pre> </code> Jika Anda menghapus baris, itu loop tidak akan menjadi gila.
dkusleika
Dia tidak menghapus, hanya menambahkan baris ke objek jangkauan (tersirat dalam komentar)
DaveParillo
1
Dia mengatakan "oleh pilih, berarti saya menghapus semua baris lainnya ..."
dkusleika
3

Benar-benar baru saja menyelesaikan ide, Randolph Potter memulai ....

Sebagai catatan, saya tidak berpikir Anda bisa membuat ini dengan merekam. Perekaman makro adalah cara yang baik untuk membiasakan diri dengan Model Objek Excel, tetapi bukan cara yang sangat baik untuk menulis fungsi yang dapat digunakan kembali.

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
sumber
Dengan Anda pada gagasan yang dapat digunakan kembali.
3
  1. Sisipkan kolom.
  2. Di baris pertama di sana, masukkan 1.
  3. Salin ke baris 7 dengan Ctrltertekan.
  4. Raih blok itu dan lakukan hal yang sama lagi sampai akhir.
  5. Data / Filter yang tidak Anda inginkan dan hapus ini.
  6. Hapus kolom yang dimasukkan.
kacang
sumber
Terima kasih atas jawabannya. Bisakah Anda menguraikan langkah 3? Apakah Anda bermaksud menahan Ctrl sambil menyeret mouse? Saya tidak memiliki akses ke Excel 2003 saat ini sehingga saya tidak dapat menguji.
Patrick McElhaney
1

untuk memilih setiap baris ke-7 ada CARA MUDAH: di 7 baris pertama kolom Anda tetapi satu (yang pertama) Anda menulis sesuatu di dalamnya. Kemudian Anda memilih 7 baris ini dan menyalinnya di seluruh kolom. Sekarang yang Anda butuhkan hanyalah pergi ke SELECT-> GO TO SPECIAL-> pilih BLANKS-> OK. Anda memiliki masing-masing 7 baris pilihan. Sekarang Anda dapat melakukan apa yang Anda inginkan. Nikmati!

Davide Di Grumo
sumber
0

untuk setiap baris ke-7,

  1. Sisipkan kolom
  2. Di baris 1 ke baris 6 beri tanda "X"
  3. di baris 7 put 1,
  4. Isi otomatis kolom Anda dengan blok itu
  5. Gunakan "Hapus Duplikat" pada kolom itu
  6. Hapus baris pertama (dengan "X" pertama).
  7. Hapus kolom yang ditambahkan
Ponch
sumber
Selamat datang di Pengguna Super. Ini pada dasarnya adalah metode yang diusulkan dalam jawaban yang diterima dan yang oleh pnuts, hanya lebih banyak pekerjaan (dan destruktif). Tidak jelas apa yang dikontribusikannya.
fixer1234
Hanya menggunakan menu lain, tidak terlalu banyak pekerjaan dalam pandangan saya atau lebih merusak daripada permintaan poster asli ("hapus semua baris lainnya").
Ponch