Selecione cada enésima linha no Excel

15

Eu tenho uma planilha do Excel com milhares de linhas. Quero selecionar todas as sétimas linhas dessa planilha. (Por "selecionar", quero dizer excluir todas as outras linhas ou copiar as linhas selecionadas em uma nova planilha.)

Qual é a maneira mais fácil de fazer isso no Excel 2003?

Consulte também: Selecione cada enésima linha em Números

Patrick McElhaney
fonte

Respostas:

19
  1. Inserir uma coluna
  2. Na primeira linha, insira a fórmula = MOD (ROW (), 7)
  3. Anote
  4. Copiar / colar valores especiais
  5. Dados / Filtre os que você deseja (0 ou 6, provavelmente)
  6. Excluir o restante das linhas Remover filtro Excluir coluna
Todd Pierzina
fonte
Não é uma solução ruim. Eu gosto das minhas macros, então essa é a minha primeira escolha, mas isso também pode funcionar com um pouco de esforço.
2
= MOD (ROW (), 7) você precisa desse segundo argumento.
dkusleika
3

Pessoalmente, eu gravava uma macro para fazer as primeiras três ou quatro linhas (em incrementos de 7 linhas, é claro) e copiava as linhas para uma nova planilha. Depois, edito a macro para usar um loop que conta com o número de linhas preenchidas na planilha, com uma etapa de 7.

Exemplo de pseudo-código:

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

fonte
Se você usar uma macro, tente retroceder <code> <pre> Sub delrows () Dim i Quanto tempo for i = 988 Para 1 Etapa -7 Planilha1.Células (i, 1) .Offset (1, 0) .Resize (6) .EntireRow.Delete Next i End Sub </pre> </code> Se você excluir linhas, o loop não ficará louco.
dkusleika
Ele não está apagando, apenas adicionando uma linha para um objeto de intervalo (implícita no comentário)
DaveParillo
1
Ele diz "por seleção, quero dizer excluir todas as outras linhas ..."
dkusleika
3

Realmente apenas terminando a idéia que Randolph Potter começou ....

Para o registro, eu acho que você nunca poderia pensar nisso gravando. A gravação de macro é uma boa maneira de se familiarizar com o Modelo de Objeto do Excel, mas não é uma maneira muito boa de escrever funções reutilizáveis.

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
fonte
Com você na noção reutilizável.
3
  1. Inserir uma coluna.
  2. Na primeira linha, insira 1.
  3. Copie para a linha 7 com Ctrlpressionado.
  4. Pegue esse bloco e faça o mesmo novamente até o fim.
  5. Dados / Filtre os que você não deseja e exclua-os.
  6. Exclua a coluna inserida.
nozes
fonte
Obrigado pela resposta. Você pode elaborar a etapa 3? Você quer manter pressionada a tecla Ctrl enquanto arrasta o mouse? Não tenho acesso ao Excel 2003 no momento, portanto não posso testar.
Patrick McElhaney 8/12/12
1

para selecionar a cada 7ª linha, há uma MANEIRA MAIS FÁCIL: nas primeiras 7 linhas da sua coluna, mas uma (a primeira) você escreve algo dentro. Depois, você seleciona essas 7 linhas e as copia na coluna inteira. Agora, o que você precisa é apenas ir para SELECIONAR-> IR PARA ESPECIAL-> selecionar EM BRANCO-> OK. Você tem a cada 7 linhas uma seleção. Agora você pode fazer o que quiser. Desfrutar!

Davide Di Grumo
fonte
0

para cada 7ª linha,

  1. Inserir uma coluna
  2. Na linha 1 à linha 6, coloque um "X"
  3. na linha 7, coloque 1,
  4. preencha automaticamente sua coluna com esse bloco
  5. Use "Remover duplicatas" nessa coluna
  6. Apague a 1ª linha (com o 1º "X").
  7. Excluir coluna adicionada
Ponch
fonte
Bem-vindo ao superusuário. Este é essencialmente o método proposto na resposta aceita e o método por nozes, apenas mais trabalho (e destrutivo). Não está claro o que contribui.
fixer1234
É apenas usando outro menu, não é realmente mais trabalhoso em minha opinião, nem mais destrutivo do que os pedidos originais de pôsteres ("exclua todas as outras linhas").
Ponch