Excel'deki her n. Satırı seçin


Yanıtlar:


19
  1. Sütun ekle
  2. İlk satırda formül ekle = MOD (ROW (), 7)
  3. Aşağı kopyala
  4. Özel / değerleri kopyala / yapıştır
  5. Veri / İstediklerinizi filtreleyin (muhtemelen 0 veya 6)
  6. Diğer satırları sil Filtreyi kaldır Sütunu sil

Kötü bir çözüm değil. Makrolarımı seviyorum, bu benim ilk tercihim, ama bu biraz çaba ile de işe yarayabilir.

2
= MOD (ROW (), 7) ikinci argümana ihtiyacınız var.
dkusleika

3

Şahsen, ilk üç veya dört satırı (elbette 7 satırlık artışlarla) yapmak için bir makro kaydeder ve satırları yeni bir sayfaya kopyalarım. Ardından, 7 adımda sayfadaki doldurulmuş satırların sayısına sayılacak bir döngü kullanmak için makroyu düzenlerdim.

Sözde kod örneği:

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

Makro kullanıyorsanız, geriye doğru gitmeyi deneyin <code> <pre> Alt delrows () Dim i As Long i = 988 To 1 Adım -7 Sheet1.Cells (i, 1) .Ofset (1, 0). (6) .EntireRow.Delete Next i End Sub </pre> </code> Satırları silerseniz, döngü çıldırmaz.
dkusleika


1
Dedi ki "seçerek, diğer tüm satırları silmek ..."
dkusleika

3

Gerçekten Randolph Potter'ın başladığı fikri bitirince ....

Kayıt için, bunu kayıt yaparak bulabileceğinizi sanmıyorum. Makro kaydı, Excel Nesne Modeli'ni tanımanın iyi bir yoludur, ancak yeniden kullanılabilir işlevler yazmak için çok iyi bir yol değildir.

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

Yeniden kullanılabilir kavram üzerinde seninle.

3
  1. Bir sütun ekleyin.
  2. Buradaki ilk satıra ekleyin 1.
  3. Basılı durumdayken 7. satıra kopyalayın Ctrl.
  4. O bloğu tut ve sonuna kadar tekrarla.
  5. Vermek / istemediklerinizi filtreleyin ve bunları silin.
  6. Eklenen sütunu silin.

Cevap için teşekkürler. 3. adımdan bahsedebilir misiniz? Fareyi sürüklerken Ctrl tuşunu basılı tutmak mı istiyorsunuz? Şu anda Excel 2003'e erişimim yok, bu yüzden test edemiyorum.
Patrick McElhaney

1

her 7. satırı seçmek için bir KOLAY YOL vardır: sütununuzun ilk 7 satırında ancak bir (ilkinde) içine bir şey yazarsınız. Sonra bu 7 satırı seçip tüm sütuna kopyalarsınız. Şimdi ihtiyacınız olan sadece SELECT-> SPECIAL'A GİT-> BLANKS-> OK'e gitmek. Her 7 satıra bir seçiminiz var. Şimdi ne istersen yapabilirsin. Zevk almak!


0

her 7. sıra için,

  1. Sütun ekle
  2. Satır 1'den satır 6'ya "X" koyun
  3. satır 7 koymak 1,
  4. sütununuzu bu blokla otomatik doldur
  5. Bu sütunda "Yinelenenleri Kaldır" ı kullanın
  6. 1. satırı silin (1. "X" ile).
  7. Eklenen sütunu sil

Süper Kullanıcıya Hoşgeldiniz. Bu aslında kabul edilen cevapta önerilen ve ceviz tarafından verilen yöntemlerdir, sadece daha fazla iş (ve yıkıcı). Neye katkıda bulunduğu açık değil.
fixer1234

Sadece başka bir menü kullanıyor, benim görüşüme göre daha fazla çalışma yapmıyor veya orijinal poster isteklerinden daha fazla yıkıcı değil ("diğer tüm satırları sil").
ponch
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.