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.