Wybierz każdy n-ty wiersz w programie Excel


Odpowiedzi:


19
  1. Wstaw kolumnę
  2. W pierwszym wierszu wstaw formułę = MOD (ROW (), 7)
  3. Skopiuj
  4. Skopiuj / wklej specjalne / wartości
  5. Dane / Odfiltruj te, które chcesz (prawdopodobnie 0 lub 6)
  6. Usuń resztę wierszy Usuń filtr Usuń kolumnę

Niezłe rozwiązanie. Lubię moje makra, więc to mój pierwszy wybór, ale może to również przy odrobinie wysiłku.

2
= MOD (ROW (), 7) potrzebujesz drugiego argumentu.
dkusleika

3

Osobiście nagrałbym makro, aby zrobić pierwsze trzy lub cztery wiersze (oczywiście w odstępach 7-rzędowych), i skopiowałem wiersze do nowego arkusza. Następnie edytowałbym makro, aby użyć pętli, która liczy się do liczby wypełnionych wierszy w arkuszu, z krokiem 7.

Przykład pseudokodu:

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

Jeśli używasz makra, spróbuj przejść wstecz <kod> <pre> Sub delrows () Dim i As Long For i = 988 To 1 Krok -7 Arkusz 1 Komórki (i, 1). Offset (1, 0). (6) .EntireRow.Delete Next i End Sub </pre> </code> Jeśli usuniesz wiersze, pętla nie zwariuje.
dkusleika

Nie usuwa, tylko dodaje wiersz do obiektu zakresu (sugerowany w komentarzu)
DaveParillo,

1
Mówi: „wybierz, mam na myśli usunięcie wszystkich innych wierszy ...”
dkusleika,

3

Naprawdę właśnie kończyłem pomysł, który rozpoczął Randolph Potter ...

Dla przypomnienia, nie sądzę, żebyś mógł coś takiego wymyślić, nagrywając. Nagrywanie makr to dobry sposób na zapoznanie się z modelem obiektów Excel, ale niezbyt dobry sposób na pisanie funkcji wielokrotnego użytku.

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

Z tobą na pojęcie wielokrotnego użytku.

3
  1. Wstaw kolumnę.
  2. W pierwszym rzędzie tam wstaw 1.
  3. Skopiuj do wiersza 7 z Ctrlwciśniętym.
  4. Chwyć ten blok i zrób to samo do końca.
  5. Dane / Filtruj te, których nie chcesz, i usuń je.
  6. Usuń wstawioną kolumnę.

Dziękuję za odpowiedź. Czy potrafisz rozwinąć krok 3? Czy chcesz przytrzymać klawisz Ctrl podczas przeciągania myszy? W tej chwili nie mam dostępu do programu Excel 2003, więc nie mogę przetestować.
Patrick McElhaney,

1

aby wybrać co 7 rząd, jest ŁATWIEJSZY SPOSÓB: w pierwszych 7 wierszach kolumny, ale w jednym (pierwszym) piszesz coś w środku. Następnie zaznacz 7 wierszy i skopiuj je do całej kolumny. Teraz wystarczy przejść do WYBIERZ-> PRZEJDŹ DO SPECJALNEGO-> wybierz PUSTE-> OK Każdy z 7 wierszy ma zaznaczenie. Teraz możesz robić, co chcesz. Cieszyć się!


0

dla każdego 7 rzędu

  1. Wstaw kolumnę
  2. W wierszach 1 do 6 wstaw „X”
  3. w wierszu 7 wstaw 1,
  4. automatycznie wypełnij kolumnę tym blokiem
  5. Użyj „Usuń duplikaty” w tej kolumnie
  6. Usuń pierwszy wiersz (z pierwszym „X”).
  7. Usuń dodaną kolumnę

Witamy w Super User. Są to w zasadzie metody zaproponowane w zaakceptowanej odpowiedzi i ta przez orzechy, tylko więcej pracy (i destrukcyjne). Nie jest jasne, co wnosi.
fixer1234,

Po prostu używa innego menu, moim zdaniem nie więcej pracy ani bardziej niszczących niż oryginalne żądania plakatów („usuń wszystkie pozostałe wiersze”).
Ponch
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.