Seleziona ogni ennesima riga in Excel


Risposte:


19
  1. Inserisci una colonna
  2. Nella prima riga inserire la formula = MOD (ROW (), 7)
  3. Copia giù
  4. Copia / incolla valori / speciali
  5. Dati / Filtra quelli che desideri (0 o 6, probabilmente)
  6. Elimina il resto delle righe Rimuovi filtro Elimina colonna

Non è una cattiva soluzione. Mi piacciono le mie macro, questa è la mia prima scelta, ma potrebbe funzionare anche con un po 'di sforzo.

2
= MOD (ROW (), 7) hai bisogno di quel secondo argomento.
dkusleika,

3

Personalmente, registrerei una macro per fare le prime tre o quattro righe (con incrementi di 7 righe, ovviamente) e copierei le righe su un nuovo foglio. Quindi modificherei la macro per utilizzare un ciclo che conta per il numero di righe popolate nel foglio, con un passaggio di 7.

Esempio di pseudo-codice:

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

Se si utilizza una macro, provare a tornare indietro <code> <pre> Sub-delrows () Dim i As Long For i = 988 To 1 Step -7 Sheet1.Cells (i, 1) .Offset (1, 0). Ridimensiona (6) .EntireRow.Delete Next i End Sub </pre> </code> Se elimini le righe, il ciclo non impazzirà.
dkusleika,

Non sta eliminando, sta solo aggiungendo una riga a un oggetto intervallo (implicito nel commento)
DaveParillo,

1
Dice "per selezione, intendo cancellare tutte le altre righe ..."
dkusleika,

3

Davvero solo finendo l'idea che Randolph Potter ha iniziato ...

Per la cronaca, non penso che potresti mai inventarlo registrando. La registrazione macro è un buon modo per familiarizzare con il modello a oggetti di Excel, ma non un ottimo modo per scrivere funzioni riutilizzabili.

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

Con te sulla nozione riutilizzabile.

3
  1. Inserisci una colonna
  2. Nella prima riga lì, inserisci 1 .
  3. Copia fino alla riga 7 con Ctrl premuto.
  4. Prendi quel blocco e fai di nuovo lo stesso fino alla fine.
  5. Dati / Filtra quelli che non vuoi ed eliminali.
  6. Elimina la colonna inserita.

Grazie per la risposta. Puoi approfondire il passaggio 3? Intendi tenere premuto Ctrl mentre trascini il mouse? Non ho accesso a Excel 2003 al momento, quindi non posso testare.
Patrick McElhaney,

1

per selezionare ogni 7a riga c'è un MODO PIÙ FACILE: nelle prime 7 righe della tua colonna ma una (la prima) scrivi qualcosa all'interno. Quindi selezionare queste 7 righe e copiarle sull'intera colonna. Ora ciò di cui hai bisogno è solo andare su SELEZIONA-> VAI A SPECIALE-> seleziona BLANCHI-> OK Hai 7 righe ciascuno una selezione. Ora puoi fare quello che vuoi. Godere!


0

per ogni 7a fila,

  1. Inserisci una colonna
  2. Nella riga 1 alla riga 6 inserisci una "X"
  3. nella riga 7 mettere 1,
  4. riempi automaticamente la tua colonna con quel blocco
  5. Usa "Rimuovi duplicati" su quella colonna
  6. Elimina la prima riga (con la prima "X").
  7. Elimina colonna aggiunta

Benvenuto in Super User. Questo è essenzialmente i metodi proposti nella risposta accettata e in quella delle noci, solo più lavoro (e distruttivo). Non è chiaro ciò che contribuisce.
fixer 1234

Sta solo usando un altro menu, a mio avviso non più lavoro né più distruttivo rispetto alle richieste del poster originale ("elimina tutte le altre righe").
Ponch
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.