Sélectionnez chaque nième ligne dans Excel

15

J'ai une feuille de calcul Excel avec des milliers de lignes. Je souhaite sélectionner toutes les septièmes lignes de cette feuille de calcul. (Par «sélectionner», je veux dire 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 le faire dans Excel 2003?

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

Patrick McElhaney
la source

Réponses:

19
  1. Insérer une colonne
  2. Dans la première ligne, insérer la formule = MOD (ROW (), 7)
  3. Recopie
  4. Copier / coller des valeurs / spéciales
  5. Données / Filtrez celles que vous voulez (0 ou 6, probablement)
  6. Supprimer le reste des lignes Supprimer le filtre Supprimer la colonne
Todd Pierzina
la source
Pas une mauvaise solution. J'aime mes macros, c'est donc mon premier choix, mais cela pourrait aussi fonctionner avec un peu d'effort.
2
= MOD (ROW (), 7) vous avez besoin de ce deuxième argument.
dkusleika
3

Personnellement, j'enregistrais une macro pour faire les trois ou quatre premières lignes (par incréments de 7 lignes, bien sûr), et je copiais les lignes sur une nouvelle feuille. Ensuite, je modifierais la macro pour utiliser une boucle qui compte jusqu'au 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
...

la source
Si vous utilisez une macro, essayez de revenir en arrière <code> <pre> Sub delrows () Dim i As Long For i = 988 To 1 Step -7 Sheet1.Cells (i, 1) .Offset (1, 0) .Resize (6) .EntireRow.Delete Next i End Sub </pre> </code> Si vous supprimez des lignes, la boucle ne deviendra pas folle.
dkusleika
Il ne supprime pas, il ajoute simplement une ligne à un objet range (sous-entendu dans le commentaire)
DaveParillo
1
Il dit "par sélectionner, je veux dire supprimer toutes les autres lignes ..."
dkusleika
3

Vraiment juste de finir l'idée que Randolph Potter a commencé ...

Pour mémoire, je ne pense pas que vous pourriez jamais trouver 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
DaveParillo
la source
Avec vous sur la notion réutilisable.
3
  1. Insérez une colonne.
  2. Dans la première ligne, insérez 1.
  3. Copiez vers le bas à la ligne 7 avec Ctrldéprimé.
  4. Saisissez ce bloc et recommencez jusqu'à la fin.
  5. Données / Filtrez celles que vous ne voulez pas et supprimez-les.
  6. Supprimez la colonne insérée.
pnuts
la source
Merci d'avoir répondu. Pouvez-vous élaborer sur l'étape 3? Voulez-vous maintenir la touche Ctrl enfoncée tout en faisant glisser la souris? Je n'ai pas accès à Excel 2003 pour le moment, je ne peux donc pas tester.
Patrick McElhaney
1

pour sélectionner chaque 7ème ligne, 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 juste d'aller dans SELECT-> GO TO SPECIAL-> sélectionnez BLANKS-> OK Vous avez chacun 7 lignes par sélection. Vous pouvez maintenant faire ce que vous voulez. Prendre plaisir!

Davide Di Grumo
la source
0

pour chaque 7ème rangée,

  1. Insérer une colonne
  2. Dans la ligne 1 à la ligne 6, mettez un "X"
  3. à la ligne 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
Ponch
la source
Bienvenue dans Super User. Il s'agit essentiellement des méthodes proposées dans la réponse acceptée et celle des pnuts, seulement plus de travail (et destructrice). On ne sait pas exactement ce que cela apporte.
fixer1234
Il s'agit simplement d'utiliser un autre menu, pas vraiment plus de travail à mon avis ni plus destructeur que les demandes d'affiche d'origine ("supprimer toutes les autres lignes").
Ponch