J'ai une feuille de calcul qui utilise 2 lignes pour les informations d'en-tête. Filtrer en sélectionnant une colonne suppose implicitement une seule ligne d'informations d'en-tête. Le tri comporte une case à cocher de rangée d’en-tête, mais elle permet uniquement de traiter la première ligne comme un en-tête.
Existe-t-il un moyen de faire en sorte que Excel traite les deux premières lignes comme des en-têtes?
Non. Omettez la première ligne de votre plage lorsque vous filtrez automatiquement. De cette manière, les boutons de filtrage automatique apparaissent uniquement sur la ligne d'en-tête inférieure et les données sont filtrées. Je m'attends à ce que votre deuxième ligne d'en-tête soit maintenant extraite dans vos "données".
Vous ne pouvez pas sélectionner une seule cellule et Excel doit le déterminer. Vous devez sélectionner la plage de cellules que vous souhaitez inclure dans Excel.
Une méthode simple pour exécuter la fonction de tri à l'aide de plusieurs lignes d'en-tête consiste à insérer une ligne vide juste au-dessus de la ligne à trier (idéalement, elle se trouve tout en bas de votre en-tête. Sinon, , fais-le.) . Cliquez ensuite sur le numéro de "ligne" pour mettre en évidence la ligne vide. Cliquez avec le bouton droit de la souris sur cette ligne et sélectionnez "Masquer". La nouvelle ligne vide disparaîtra, laissant votre en-tête comme vous le souhaitez et Excel interprétera votre ligne de catégorie comme étant l'en-tête.
Si vous sélectionnez une ligne entière (en sélectionnant le numéro de ligne situé à gauche de la ligne), puis activez votre filtre (Données> Filtre), vous obtiendrez des filtres pour tout ce qui se trouve sous la ligne sélectionnée et ignorera tout ce qui se trouve dessus.
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.
Ok, ce qui suit fonctionne dans Excel 2010, même après avoir enregistré le fichier en tant que Excel 2007 et avoir été rouvert (fonctionne vraisemblablement aussi dans Excel 2007 ...)
En supposant un en-tête de 3 lignes. Définissez la plage du filtre de la feuille de calcul sur Commencer à la cellule $ A 4 et assurez-vous qu’elle couvre l’ensemble des données à trier. SAUVEZ LE FICHIER.
Désormais, toute sorte traitera les lignes 1 à 3 comme des en-têtes et ne triera donc qu'à partir de la ligne 4. - SAUF si vous modifiez ou annulez la plage de filtres ....
Je sais que je suis sur SuperUser et non sur StackOverflow, mais la solution à ce problème peut être trouvée en utilisant du code VBA sur Excel 2016.
J'ai un problème similaire (plus complexe).
Je veux ajouter des filtres sur les colonnes explicites, mais pas sur la ligne 1, mais uniquement sur la ligne 2, comme vous pouvez le voir dans la capture d'écran suivante.
J'ai essayé d'utiliser Excel GUI 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. Dissocier les cellules d'en-tête fusionnées verticalement pour permettre l'ajout d'un 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 à l'exception de la ligne 1.
C. Supprimer ou masquer la liste déroulante FILTER pour certaines colonnes
Selection.AutoFilter Field:=GetColumnIndex("C"), VisibleDropDown:=False
DropBox de la colonne "C" est masqué.
D. Fusionner les cellules non fusionnées pour rétablir l'état d'origine
Range("A1:A2").MergeCells = True
Les cellules A1 et A2 sont à nouveau fusionnées.
J'avais le même problème, donc la contribution de tout le monde m'a amené à la façon dont ça fonctionne pour moi (jusqu'à présent).
AJOUTEZ une ligne vide sous votre en-tête multi-lignes (si votre en-tête est composé de 5 lignes d'informations et/ou de tailles de cellules impaires, votre NOUVELLE ligne vide sera Row6).
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 tant que vous n’avez pas terminé les étapes 3 et 4 ci-dessous, sinon vous "désélectionnez" la ligne. Vous voulez le garder 'sélectionné'.
Allez à l'onglet VUE> Figer les volets> Débloquer (faites-le d'abord pour le nettoyer)> Figer. Cela gèlera votre en-tête de 5 lignes et également la ligne vide (rangée6).
Maintenez enfoncée la touche "ALT", puis appuyez sur les touches suivantes: D, F, F (il s'agit du raccourci pour activer/désactiver/désactiver/effacer tous les filtres de la feuille.
À partir de ce moment-là, chaque fois que vous reviendrez utiliser cette feuille et que vous aurez besoin d'activer ces filtres (si vous les avez précédemment désactivés pour une raison quelconque), puis> Sélectionnez votre ligne vide (comme expliqué au point 2); > Activez tous vos filtres (comme expliqué au point 4).
Désolé d'être aussi verbeux, mais après l'avoir fait plusieurs fois, l'aimera probablement (si vous utilisez beaucoup les filtres).
Excel 2007 peut détecter intelligemment si vous avez des en-têtes à plusieurs lignes. J'ai juste fait une expérience simple avant d'écrire ceci.
Avant de faire votre premier tri, positionnez le curseur juste en dessous de l'en-tête. C'est tout! Le tri va bien, le filtrage va bien. Excel a ignoré la 1ère ligne de mes en-têtes. Il traite simplement la 2ème ligne comme en-tête réel.
Mettez en surbrillance les cellules à trier (sauf les en-têtes), puis sélectionnez le filtre.
J'utilise Excel 2010. Pour conserver les lignes d'en-tête (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.
Étape 1 Mettez en surbrillance la rangée d’en-tête inférieure. puis vous pouvez uniquement sélectionner les cellules d’une ligne ou sélectionner la ligne entière.
Étape 2, cliquez ensuite sur "Trier et filtrer" dans l'onglet Accueil, puis sélectionnez "Filtrer". Excel ajoute des flèches de filtre à tous les noms de colonnes.
Étape 3 puis cliquez sur une flèche et sélectionnez ensuite une option de tri pour trier le tableau entier par cette colonne.
Enfin, l’étape 4 clique sur "Trier et filtrer" et sélectionnez "Filtrer" à nouveau si vous souhaitez vous débarrasser des flèches tout en conservant la zone de tri définie par le filtre. maintenant, vous pouvez trier normalement, Excel ignore les lignes d'en-tête supplémentaires