Come ottenere intestazioni di ordinamento / filtro su più righe in Excel


17

Ho un foglio di calcolo che utilizza 2 righe per le informazioni di intestazione. Il filtro selezionando una colonna presuppone implicitamente solo 1 riga di informazioni di intestazione. L'ordinamento ha una casella di controllo della riga di intestazione, ma attiva e disattiva solo la prima riga come intestazione.

C'è un modo per fare in modo che Excel tratti le prime due righe come intestazioni?

Risposte:


18

No. Ometti la prima riga dall'intervallo quando esegui il filtro automatico. In questo modo i pulsanti del filtro automatico vengono visualizzati solo nella riga di intestazione inferiore e i dati vengono filtrati. Mi aspetto che in questo momento la tua seconda riga di intestazione venga inserita nei tuoi "dati".

Non è possibile selezionare una singola cella e fare in modo che Excel lo capisca. Devi selezionare l'intervallo di celle che vuoi includere in Excel.


È. Non mi rendevo conto di poter selezionare una cella specifica per iniziare il filtro, invece di selezionare una colonna.
Dan Neely,

7

Un modo semplice per eseguire la funzione di ordinamento utilizzando più righe di intestazione è quello di inserire una riga vuota appena sopra la riga in base alla quale si desidera ordinare (idealmente, è la parte più in basso nell'intestazione. In caso contrario, renderlo così.) . Quindi fare clic sul numero "riga" evidenziando la riga vuota. Fai clic con il pulsante destro del mouse su quella riga e seleziona "Nascondi". La nuova riga vuota svanirà lasciando l'intestazione nel modo desiderato e Excel interpreterà la riga della categoria come intestazione.


2

Se selezioni un'intera riga (selezionando il numero di riga a sinistra della riga) e quindi abiliti il ​​filtro (Dati> Filtro), ti fornirà i filtri per tutto ciò che si trova al di sotto della riga selezionata e ignorerai tutto ciò che lo sovrasta.


Questa è la risposta corretta e la più semplice. Funziona in Excel 2016 poiché questa è una domanda molto più antica.
Shawn,

Grazie! Perché tutti gli altri qui lo fanno così complicato?
user291695

@ user291695: Sto immaginando dalla data su OP che probabilmente è stato fatto così per una versione precedente di MS Office come nelle risposte precedenti e le risposte più recenti non hanno senso. Non lo so per certo però.
Fr0zenFr

1

Per filtrare un elenco con 2 righe di intestazione, in cui la seconda riga contiene le intestazioni di colonna, ecco cosa ho fatto.

  • Taglia la prima riga
  • Disattiva il filtro
  • Riattiva il filtro in modo da filtrare la seconda riga. Questo dice a Excel quale è la riga con le intestazioni di colonna.
  • Incolla nuovamente la prima riga sopra la riga con i filtri e le intestazioni di colonna
  • Verifica se il filtro ora funziona, con le intestazioni di colonna nella seconda riga.

1

Bene, il seguente funziona in Excel 2010, anche dopo aver salvato il file come Excel 2007 e riaperto (quindi presumibilmente funziona anche in Excel 2007 ...)

Supponendo un'intestazione di 3 righe. Imposta l'intervallo del filtro del foglio di calcolo su Inizia dalla cella $ A $ 4 e assicurati che copra l'intera estensione dei dati che desideri ordinare. SALVA IL FILE.

D'ora in poi, qualsiasi ordinamento tratterà le righe da 1 a 3 come intestazioni e quindi ordinerà solo dalla riga 4 in poi. - A MENO CHE non modifichi o annulli la gamma di filtri ....


La risposta di Deedgess ha funzionato per me. Quando aggiungi un filtro, Excel assume che ogni riga sopra sia un'intestazione. Nel mio caso, ho un'intestazione di 2 righe. Ho selezionato la riga 2 e attivato il filtro. Quindi ho selezionato l'ordinamento personalizzato e ho selezionato la casella per l'intestazione. Quando si è verificato l'ordinamento, sia la riga 1 che la riga 2 sono rimaste come intestazione.

1

So che sono su SuperUser e non su StackOverflow, ma la soluzione a questo problema può essere trovata utilizzando il codice VBA su Excel 2016.

Ho un problema simile (più complesso).

Voglio aggiungere alcuni filtri su colonne esplicite ma non sulla riga 1 solo sulla riga 2, come puoi vedere nella seguente schermata di acquisizione.

inserisci qui la descrizione dell'immagine

Ho provato a utilizzare la GUI di Excel ma questo sembra impossibile, quindi ho scritto il seguente codice:

'********************************************************
'* 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 logica di questo codice è

A. Unmerge le celle di intestazione unite verticalmente per consentire l'aggiunta di filtri sulla riga 2

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

Le celle A1 e A2 non sono unite.

B. Aggiungi filtro automatico su tutte le celle della riga 2

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

Il filtro automatico viene generato per le celle in tutte le righe tranne la riga 1.

C. Rimuovere o nascondere la casella combinata FILTER per alcune colonne

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

DropBox della colonna "C" è nascosto.

D. Unisci celle non unite per ripristinare lo stato originale

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

Le celle A1 e A2 vengono nuovamente unite.


0

Excel 2007 è in grado di rilevare in modo intelligente se si dispone di intestazioni a più righe. Ho fatto un semplice esperimento poco prima di scrivere questo.

Prima di effettuare il tuo primo ordinamento, posiziona il cursore proprio sotto l'intestazione. Questo è tutto! L'ordinamento va bene, il filtro va bene. Excel ha ignorato la prima riga delle mie intestazioni. Elabora solo la seconda riga come intestazione reale.


3
No, questo non funziona. È vero che Excel 07 è in grado di rilevare automaticamente le intestazioni multi-riga in alcuni casi, ma si basa sul contenuto della cella, non su quale cella fai clic. Ad esempio, se le prime due righe sono di testo e tutto sotto è numerico, Excel supporrà che le prime 2 righe siano entrambe intestazioni.
Josh,

0

Evidenzia le celle che devono essere ordinate (tutte tranne le intestazioni) e quindi seleziona filtro.


0

Sto usando Excel 2010. Per conservare le righe di intestazione (ad esempio le prime 4 righe), evidenziare la riga 5 e quindi attivare i filtri. Le righe 1 - 4 sono escluse dal filtro.


0

Ho avuto lo stesso problema, quindi il contributo di tutti mi ha portato al modo in cui funziona per me (finora).

  1. AGGIUNGI una riga vuota sotto l'intestazione (o più righe) (se l'intestazione è composta da 5 righe di informazioni e / o dimensioni di celle dispari, la tua NUOVA riga vuota sarà Row6).

  2. Fare clic su Row6 (all'estrema sinistra / effettivamente fare clic su "6" (Excel Row #) per selezionare l'intera riga / all'infinito). Assicurati di NON fare clic su qualsiasi altra CELLA, fino a quando non avrai completato il n. 3 e il n. 4 di seguito, o "Deselezionerai" la riga. Vuoi tenerlo "Selezionato".

  3. Vai alla scheda VISUALIZZA> Blocca riquadri> Sblocca (per prima cosa cancella)> Blocca. Ciò bloccherà l'intestazione a 5 righe e anche la riga vuota (riga6).

  4. Tenere premuto "ALT", quindi premere i seguenti tasti: D, F, F (questa è la scorciatoia per attivare e disattivare / cancellare tutti i filtri sul foglio.

  5. Da questo punto in poi, ogni volta che ritorni a utilizzare questo foglio e hai bisogno di quei filtri attivi (se in precedenza li hai disattivati ​​per qualsiasi motivo), quindi> Seleziona la tua riga vuota (come spiegato nel n. 2); > Attiva tutti i filtri (come spiegato nel n. 4).

Mi dispiace essere così prolisso, ma dopo averlo fatto alcune volte, probabilmente ti piacerà (se usi molto i filtri).


0

Passaggio 1 Evidenziare la riga di intestazione inferiore. e quindi è possibile selezionare solo le celle di una riga o selezionare l'intera riga.

Passaggio 2 quindi fare clic su "Ordina e filtra" nella scheda Home, quindi è possibile selezionare "Filtro". Excel aggiunge le frecce del filtro a tutti i nomi di colonna.

Passaggio 3, quindi fare clic su una freccia e successivamente selezionare un'opzione di ordinamento per ordinare l'intera tabella in base a quella colonna.

Passo 4 infine fai clic su "Ordina e filtra" e seleziona nuovamente "Filtro" se vuoi eliminare le frecce, ma mantieni l'area di ordinamento definita dal filtro. ora puoi ordinare normalmente, Excel ignora le righe di intestazione extra


-1

Un altro modo per ottenere in alcuni casi è inserire un valore nella seconda colonna che causerà l'inclusione del filtro, quindi far corrispondere il testo di quella cella al colore di sfondo della cella. Non così carino poiché l'intestazione (riga 1) non sarà centrata orizzontalmente nella cella ma funzionerà ...


-1

Ho avuto lo stesso problema e ho trovato una soluzione che funziona per me. Per ogni riga nell'intestazione che non vuoi vedere, rendi le lettere bianche (o il colore di sfondo). Quando esegui l'ordinamento non visualizzi tutte le stesse intestazioni nelle righe. Peccato quando vuoi cambiare qualcosa, ma in quel caso puoi anche renderli grigio chiaro.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.