web-dev-qa-db-fra.com

Sélectionnez chaque nième ligne dans Excel

J'ai une feuille de calcul Excel avec des milliers de lignes. Je veux sélectionner chaque 7ème ligne de cette feuille de calcul. (Par "select", j'entends supprimer toutes les autres lignes ou copier les lignes sélectionnées dans une nouvelle feuille de calcul.)

Quelle est la façon la plus simple de faire cela dans Excel 2003?

Voir aussi: Sélectionnez chaque nième ligne dans Numbers

13
Patrick McElhaney
  1. Insérer une colonne
  2. Dans la première ligne, insérer la formule = MOD (ROW (), 7)
  3. Recopie
  4. Copier/coller spécial/valeurs
  5. Données/Filtrez ceux que vous voulez (0 ou 6, probablement)
  6. Supprimer le reste des lignes Supprimer le filtre Supprimer la colonne
18
Todd Pierzina

Personnellement, j’enregistrais une macro pour faire les trois ou quatre premières lignes (par incréments de 7 lignes, bien sûr) et les copiais sur une nouvelle feuille. Ensuite, je modifie la macro pour utiliser une boucle qui compte pour le nombre de lignes remplies dans la feuille, avec un pas de 7.

Exemple de pseudo-code:

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

Vraiment en train de finir l’idée de Randolph Potter ....

Pour mémoire, je ne pense pas que vous puissiez jamais arriver à cela en enregistrant. L'enregistrement de macro est un bon moyen de vous familiariser avec le modèle d'objet Excel, mais pas un très bon moyen d'écrire des fonctions réutilisables.

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
3
DaveParillo
  1. Insérer une colonne.
  2. Dans la première ligne, insérez 1.
  3. Copier à la rangée 7 avec Ctrl déprimé.
  4. Saisissez ce bloc et faites la même chose jusqu'à la fin.
  5. Données/Filtrez celles que vous ne voulez pas et supprimez-les.
  6. Supprimer la colonne insérée.
3
pnuts

pour sélectionner toutes les 7 lignes, il existe un moyen plus simple: dans les 7 premières lignes de votre colonne, mais une (la première), vous écrivez quelque chose à l'intérieur. Ensuite, vous sélectionnez ces 7 lignes et les copiez sur toute la colonne. Maintenant, ce dont vous avez besoin, c'est simplement de sélectionner SELECT-> GO TO SPECIAL-> select BLANKS-> OK. Vous avez chacun une sélection de 7 lignes. Maintenant tu peux faire ce que tu veux. Prendre plaisir!

1
Davide Di Grumo

pour chaque 7ème rangée,

  1. Insérer une colonne
  2. De la rangée 1 à la rangée 6, mettez un "X"
  3. dans la rangée 7, mettez 1,
  4. remplir automatiquement votre colonne avec ce bloc
  5. Utilisez "Supprimer les doublons" sur cette colonne
  6. Supprimer la 1ère ligne (avec le 1er "X").
  7. Supprimer la colonne ajoutée
0
Ponch