Comment obtenir des en-têtes de tri / filtrage sur plusieurs lignes dans Excel

17

J'ai une feuille de calcul qui utilise 2 lignes pour les informations d'en-tête. Le filtrage en sélectionnant une colonne suppose implicitement une seule ligne d'informations d'en-tête. Le tri comporte une case à cocher de ligne d'en-tête, mais qui active uniquement le traitement de la première ligne comme en-tête.

Existe-t-il un moyen pour Excel de traiter les deux premières lignes comme des en-têtes?

Dan Neely
la source

Réponses:

18

Non. Omettez la première ligne de votre plage lorsque vous filtrez automatiquement. De cette façon, les boutons de filtrage automatique apparaissent uniquement sur votre ligne d'en-tête inférieure et les données sont filtrées. J'espère qu'en ce moment, votre deuxième ligne d'en-tête est tirée dans vos «données».

Vous ne pouvez pas sélectionner une seule cellule et avoir Excel le comprendre. Vous devez sélectionner la plage de cellules que vous souhaitez inclure dans Excel.

DaveParillo
la source
Il est. Je ne savais pas que je pouvais sélectionner une cellule spécifique pour démarrer le filtrage, au lieu de faire une sélection de colonne.
Dan Neely
7

Un moyen simple d'accomplir la fonction de tri à l'aide de plusieurs lignes d'en-tête consiste à insérer une ligne vierge juste au-dessus de la ligne selon laquelle vous souhaitez trier (idéalement, elle est la plus basse de votre en-tête. Sinon, faites-le.) . Cliquez ensuite sur le numéro de «ligne» en surlignant la ligne vide. Faites un clic droit sur cette ligne et sélectionnez «Masquer». La nouvelle ligne vide disparaîtra en laissant votre en-tête comme vous le vouliez et Excel interprétera votre ligne de catégorie comme en-tête.

George Cahill
la source
2

Si vous sélectionnez une ligne entière (en sélectionnant le numéro de ligne à gauche de la ligne), puis activez votre filtre (Données> Filtre), il vous donnera des filtres pour tout en dessous de la ligne sélectionnée et ignorera tout ce qui se trouve au-dessus.

user291695
la source
C'est la bonne réponse et la plus simple. Cela fonctionne dans Excel 2016 car c'est une question beaucoup plus ancienne.
Shawn
Je vous remercie! Pourquoi tout le monde ici le fait-il si compliqué?
user291695
@ user291695: Je suppose à partir de la date sur OP que c'est probablement ainsi que cela a été fait pour une ancienne version de MS Office, comme dans les réponses plus anciennes et les nouvelles réponses n'ont tout simplement pas de sens. Je n'en suis pas sûr cependant.
Fr0zenFyr
1

Pour filtrer une liste avec 2 lignes d'en-tête, où la deuxième ligne contient les en-têtes de colonne, voici ce que j'ai fait.

  • Coupez la première rangée
  • Désactiver le filtrage
  • Activez à nouveau le filtrage pour filtrer la deuxième ligne. Cela indique à Excel quelle est la ligne avec les en-têtes de colonne.
  • Collez à nouveau la première ligne au-dessus de la ligne avec les filtres et les en-têtes de colonne
  • Vérifiez si le filtre fonctionne maintenant, avec les en-têtes de colonne sur la deuxième ligne.
PeterJHill
la source
1

D'accord, ce qui suit fonctionne dans Excel 2010, même après avoir enregistré le fichier en tant qu'Excel 2007 et rouvert (donc fonctionne probablement dans Excel 2007 aussi ...)

En supposant un en-tête de 3 lignes. Définissez la plage de filtre de la feuille de calcul sur Commencer à la cellule $ A $ 4 et assurez-vous qu'elle couvre la totalité des données que vous souhaitez trier. ENREGISTRER LE FICHIER.

Dorénavant, tout tri traitera les lignes 1 à 3 comme des en-têtes et ne triera donc qu'à partir de la ligne 4. - A MOINS que vous ne modifiiez ou annuliez la plage de filtrage ....

acte de cession
la source
La réponse de deedgess a fonctionné pour moi. Lorsque vous ajoutez un filtre, Excel suppose que chaque ligne au-dessus est un en-tête. Dans mon cas, j'ai un en-tête à 2 lignes. J'ai sélectionné la ligne 2 et activé le filtre. Ensuite, j'ai sélectionné le tri personnalisé et coché la case pour l'en-tête. Lorsque le tri s'est produit, les lignes 1 et 2 sont restées comme en-tête.
Intéressant, quand je le fais dans Excel 1911, le tri avec la liste déroulante du filtre fonctionne, mais le tri personnalisé ne fonctionne pas: la ligne 2 est restée, mais la ligne 1 a été triée avec tout le reste. Ainsi, la valeur "la plus basse" de mes données réelles est maintenant dans la ligne 1, et la ligne d'origine 1 est coincée dans ma plage de données.
pateksan Il y a
1

Je sais que je suis sur SuperUser et non sur StackOverflow, mais la solution à ce problème peut être trouvée en utilisant le code VBA sur Excel 2016.

J'ai un problème similaire (plus complexe).

Je veux ajouter des filtres sur des colonnes explicites mais pas sur la ligne 1 uniquement sur la ligne 2 comme vous pouvez le voir dans la capture d'écran suivante.

entrez la description de l'image ici

J'ai essayé d'utiliser l'interface graphique Excel, mais cela semble impossible, j'ai donc écrit le code suivant:

'********************************************************
'* SetFilter()
'********************************************************
'* PUBLIC method to call to define CUSTOM AutoFilter
'* on complex header.
'********************************************************

Sub SetFilter()
  'Compute last row number
  Dim nLast As Long
  nLast = Range("A" & Rows.Count).End(xlUp).Row

  'Lock screen update 
  Application.ScreenUpdating = False

  'Unmerge merged cells to allow adding filter
  Range("A1:A2").MergeCells = False
  Range("B1:B2").MergeCells = False
  Range("C1:C2").MergeCells = False
  Range("D1:D2").MergeCells = False
  Range("E1:E2").MergeCells = False
  Range("F1:F2").MergeCells = False

  'Add filter on row 2 and not 1  
  Range("A2:Z" & nLast).Select
  Selection.AutoFilter

  'Remove (or Hide) filter combobox for some columns
  Selection.AutoFilter Field:=GetColumnIndex("C"), VisibleDropDown:=False
  Selection.AutoFilter Field:=GetColumnIndex("G"), VisibleDropDown:=False
  Selection.AutoFilter Field:=GetColumnIndex("H"), VisibleDropDown:=False

  'Merge unmerged cells to restore previous state
  Range("A1:A2").MergeCells = True
  Range("B1:B2").MergeCells = True
  Range("C1:C2").MergeCells = True
  Range("D1:D2").MergeCells = True
  Range("E1:E2").MergeCells = True
  Range("F1:F2").MergeCells = True

  'Unlock screen update 
  Application.ScreenUpdating = True

End Sub

'********************************************************
'* GetColumnIndex()
'********************************************************
'* return column's index from column letters
'********************************************************

Function GetColumnIndex(sColLetter As String) As Integer
    Dim n As Integer: n = 0
    Dim iMax As Integer: iMax = Len(sColLetter)
    Dim i As Integer
    Dim sChar As String
    Dim c As Integer

    For i = 1 To iMax
        sChar = Mid(sColLetter, i, 1)
        c = 1 + Asc(sChar) - Asc("A")
        n = n * 26 + c
    Next

    If n = 1 Then
      n = 1
    End If

    GetColumnIndex = n
End Function

La logique de ce code est

A. Annuler la fusion des cellules d'en-tête fusionnées verticalement pour permettre l'ajout de filtre sur la ligne 2

Range("A1:A2").MergeCells = False

Les cellules A1 et A2 ne sont pas fusionnées.

B. Ajouter un filtre automatique sur toutes les cellules de la ligne 2

Range("A2:Z" & nLast).AutoFilter

Le filtre automatique est généré pour les cellules de toutes les lignes sauf la ligne 1.

C. Supprimer ou masquer la zone de liste déroulante FILTER pour certaines colonnes

Selection.AutoFilter Field:=GetColumnIndex("C"), VisibleDropDown:=False

La DropBox de la colonne "C" est masquée.

D. Fusionner les cellules non fusionnées pour restaurer l'état d'origine

Range("A1:A2").MergeCells = True

Les cellules A1 et A2 sont à nouveau fusionnées.

schlebe
la source
0

Excel 2007 peut détecter intelligemment si vous avez des en-têtes à plusieurs lignes. J'ai fait une expérience simple juste avant d'écrire ceci.

Avant de faire votre premier tri, placez le curseur juste en dessous de l'en-tête. C'est ça! Le tri est très bien, le filtrage est bien. Excel a ignoré la 1ère ligne de mes en-têtes. Il traite simplement la 2e ligne comme véritable en-tête.

thenonhacker
la source
3
Non, ça ne marche pas. Il est vrai qu'Excel 07 peut détecter automatiquement les en-têtes à plusieurs lignes dans certains cas, mais il est basé sur le contenu des cellules, et non sur la cellule sur laquelle vous cliquez. Par exemple, si les deux premières lignes sont du texte et que tout ce qui suit est numérique, Excel supposera que les 2 premières lignes sont les deux en-têtes.
Josh
0

Mettez en surbrillance les cellules qui doivent être triées (toutes sauf les en-têtes), puis sélectionnez le filtre.

Laurah
la source
0

J'utilise Excel 2010. Pour conserver les lignes de titre (par exemple les 4 premières lignes), mettez en surbrillance la ligne 5, puis activez les filtres. Les lignes 1 à 4 sont exclues du filtre.

Tony Bray
la source
0

J'ai eu le même problème, donc la contribution de tout le monde m'a conduit à la façon dont cela fonctionne pour moi (jusqu'à présent).

  1. AJOUTEZ une ligne vide sous votre en-tête à plusieurs lignes (si votre en-tête est composé de 5 lignes d'informations et / ou de tailles de cellule impaires, votre NOUVELLE ligne vide sera alors Row6).

  2. Cliquez sur Row6 (à l'extrême gauche / cliquez sur le "6" (Excel Row #) pour sélectionner la ligne entière / à l'infini). Assurez-vous de NE PAS cliquer sur une autre CELLULE, jusqu'à ce que vous ayez terminé # 3 et # 4 ci-dessous, ou vous «Désélectionnerez» la ligne. Vous voulez le garder «sélectionné».

  3. Accédez à l'onglet AFFICHER> Geler les volets> Dégeler (faites d'abord cela pour l'effacer)> Geler. Cela gèlera votre en-tête de 5 lignes et également la ligne vide (ligne 6).

  4. Maintenez "ALT" enfoncé, puis appuyez sur les touches suivantes: D, F, F (il s'agit du raccourci pour activer et désactiver / effacer tous les filtres de la feuille.

  5. À partir de ce moment, chaque fois que vous revenez à utiliser cette feuille et que vous avez besoin de ces filtres (si vous les avez précédemment désactivés pour une raison quelconque), puis> Sélectionnez votre ligne vide (comme expliqué dans # 2); > Activez tous vos filtres (comme expliqué au # 4).

Désolé d'être si verbeux, mais après l'avoir fait plusieurs fois, je l'adorerai probablement (si vous utilisez beaucoup de filtres).

JohnB
la source
0

Étape 1 Mettez en surbrillance la ligne d'en-tête inférieure. puis vous pouvez sélectionner uniquement les cellules d'une ligne ou sélectionner la ligne entière.

Étape 2, cliquez ensuite sur "Trier et filtrer" sur l'onglet Accueil, puis vous pouvez sélectionner "Filtrer". Excel ajoute des flèches de filtre à tous les noms de colonnes.

Étape 3, puis cliquez sur une flèche, puis sélectionnez une option de tri pour trier la table entière par cette colonne.

Étape 4 cliquez enfin sur "Trier et filtrer" et sélectionnez à nouveau "Filtrer" si vous souhaitez vous débarrasser des flèches, mais conservez la zone de tri définie par le filtre. maintenant vous pouvez trier normalement, Excel ignore les lignes d'en-tête supplémentaires

coaching pte
la source
-1

Dans certains cas, une autre façon de procéder consiste à entrer une valeur dans la deuxième colonne qui entraînera l'inclusion du filtre, puis à faire correspondre le texte de cette cellule à la couleur d'arrière-plan de la cellule. Pas si joli car l'en-tête (ligne 1) ne sera pas centré horizontalement dans la cellule mais ça marchera ...

Tony
la source
-1

J'ai eu le même problème et j'ai trouvé une solution qui fonctionne pour moi. Pour chaque ligne de l'en-tête que vous ne souhaitez pas voir, vous rendez les lettres blanches (ou la couleur de fond). Lorsque vous triez, vous ne voyez pas tous les mêmes en-têtes dans les lignes. Dommage quand vous voulez changer quelque chose, mais dans ce cas, vous pouvez également les rendre gris clair.

Job Oosterhuis
la source