Как получить многострочный заголовок сортировки / фильтрации в Excel


17

У меня есть электронная таблица, которая использует 2 строки для информации заголовка. Фильтрация путем выбора столбца неявно предполагает только 1 строку информации заголовка. У сортировки есть флажок строки заголовка, но это только переключает обработку первой строки как заголовка.

Есть ли способ заставить Excel обрабатывать первые две строки как заголовки?

Ответы:


18

Нет. Пропустите первый ряд из вашего диапазона, когда вы автоматически фильтруете. Таким образом, кнопки автоматического фильтра появляются только в нижней строке заголовка, и данные фильтруются. Я ожидаю, что прямо сейчас ваша вторая строка заголовка втягивается в ваши «данные».

Вы не можете выбрать одну ячейку, и вам нужно это понять. Вы должны выбрать диапазон ячеек, которые вы хотите включить в Excel.


Это. Я не осознавал, что смогу выбрать конкретную ячейку для начала фильтрации, в отличие от выбора столбца.
Дэн Нили

7

Самый простой способ выполнить функцию сортировки с использованием нескольких строк заголовка - вставить пустую строку чуть выше строки, по которой вы хотите отсортировать (в идеале, она должна быть самой нижней в вашем заголовке. Если нет, сделайте это так.) . Затем нажмите на номер строки, выделив пустую строку. Щелкните правой кнопкой мыши по этой строке и выберите «Скрыть». Новая пустая строка исчезнет, ​​оставив заголовок таким, каким вы хотели его видеть, и Excel будет интерпретировать строку категории как заголовок.


2

Если вы выберете целую строку (выбрав номер строки слева от строки), а затем включите свой фильтр (Данные> Фильтр), он даст вам фильтры для всего, что находится ниже выбранной строки, и игнорирует все, что находится над ним.


Это правильный ответ и самый простой. Это работает в Excel 2016, так как это гораздо более старый вопрос.
Шон

Спасибо! Почему все остальные здесь делают это так сложно?
user291695

@ user291695: Я предполагаю, что начиная с даты OP, это было так, как это было, вероятно, для старой версии MS Office, как и в старых ответах, а новые ответы просто не имеют смысла. Хотя точно не знаю.
Fr0zenFyr

1

Чтобы отфильтровать список с 2 строками заголовков, где вторая строка содержит заголовки столбцов, вот что я сделал.

  • Вырезать первый ряд
  • Отключить фильтрацию
  • Снова включите фильтрацию, чтобы отфильтровать второй ряд. Это говорит Excel, который является строкой с заголовками столбцов.
  • Вставьте первый ряд снова над строкой с фильтрами и заголовками столбцов.
  • Проверьте, работает ли теперь фильтр, с заголовками столбцов во второй строке.

1

Хорошо, следующее работает в Excel 2010, даже после сохранения файла обратно в Excel 2007 и повторного открытия (так что предположительно работает и в Excel 2007 ...)

Предполагая 3 строки заголовка. Установите диапазон фильтра электронных таблиц «Начать с ячейки $ A $ 4» и убедитесь, что он охватывает весь объем данных, которые вы хотите отсортировать. СОХРАНИТЬ ФАЙЛ.

Отныне любой вид будет обрабатывать строки с 1 по 3 как заголовки и, следовательно, сортировать только начиная со строки 4. - Если вы не измените или не отмените диапазон фильтра ....


Ответ от degegess работал для меня. Когда вы добавляете фильтр, Excel предполагает, что каждая строка над ним является заголовком. В моем случае у меня есть заголовок 2 строки. Я выбрал строку 2 и включил фильтр. Затем я выбрал пользовательскую сортировку и установил флажок для заголовка. Когда произошла сортировка, строка 1 и строка 2 оставались заголовком.

Интересно, что когда я делаю это в Excel 1911, работает сортировка с раскрывающимся списком фильтра, но пользовательская сортировка - нет: строка 2 остается на месте, а строка 1 сортируется вместе со всем остальным. Таким образом, «самое низкое» значение из моих фактических данных теперь находится в строке 1, а исходная строка 1 застряла в моем диапазоне данных.
Патексан

1

Я знаю, что я использую SuperUser, а не StackOverflow, но решение этой проблемы можно найти с помощью кода VBA в Excel 2016.

У меня похожая (более сложная) проблема.

Я хочу добавить несколько фильтров для явных столбцов, но не для строки 1, а только для строки 2, как вы можете видеть на следующем снимке экрана.

введите описание изображения здесь

Я пытался использовать Excel GUI, но это кажется невозможным, поэтому я написал следующий код:

'********************************************************
'* 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

Логика этого кода

A. Слейте вертикально объединенные ячейки заголовка, чтобы добавить фильтр в строке 2

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

Клетки А1 и А2 не были объединены.

Б. Добавьте автофильтр во все ячейки строки 2

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

Автофильтр создается для ячеек во всех строках, кроме строки 1.

C. Удалить или скрыть FILTER Combobox для некоторых столбцов

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

DropBox столбца "C" скрыт.

D. объединить незакрепленные клетки, чтобы восстановить исходное состояние

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

Клетки А1 и А2 снова объединены.


0

Excel 2007 может с умом определить, есть ли у вас несколько строк заголовков. Я сделал простой эксперимент прямо сейчас, прежде чем писать это.

Перед выполнением первой сортировки поместите курсор прямо под заголовком. Это оно! Сортировка в порядке, фильтрация в порядке. Excel игнорировал 1-й ряд моих заголовков. Он просто обрабатывает 2-ю строку как настоящий заголовок.


3
Нет, это не работает Это правда, что в некоторых случаях Excel 07 может автоматически определять многострочные заголовки , но он основан на содержимом ячейки, а не на том, на какую ячейку вы щелкаете. Например, если первые две строки являются текстовыми, а все, что находится ниже, является числовым, то Excel будет считать, что первые две строки являются заголовками.
Джош

0

Выделите ячейки, которые нужно отсортировать (все, кроме заголовков), а затем выберите фильтр.


0

Я использую Excel 2010. Чтобы сохранить строки заголовков (например, первые 4 строки), выделите строку 5, а затем включите фильтры. Ряды 1 - 4 исключены из фильтра.


0

У меня была такая же проблема, поэтому вклад каждого привел меня к тому, как дела для меня (пока).

  1. ДОБАВЬТЕ пустую строку под заголовком Multi-row (s) (если ваш заголовок содержит 5 строк информации и / или нечетных размеров ячеек, тогда ваша НОВАЯ пустая строка будет Row6).

  2. Нажмите на Row6 (в крайнем левом углу / на самом деле нажмите «6» (Excel Row #), чтобы выбрать всю строку / до бесконечности). ОБЯЗАТЕЛЬНО НЕ нажимайте ни на одну другую ячейку, пока не закончите # 3 и # 4 ниже или не отмените выделение строки. Вы хотите оставить его «выбранным».

  3. Перейдите на вкладку «ПРОСМОТР»> «Стоп-кадр»> «Разморозить» (сначала очистите ее)> «Стоп-кадр». Это зафиксирует ваш заголовок из 5 строк, а также пустую строку (row6).

  4. Удерживайте нажатой клавишу «ALT», затем нажмите следующие клавиши: D, F, F (это ярлык для включения и выключения / удаления всех фильтров на листе.

  5. С этого момента, всякий раз, когда вы возвращаетесь к использованию этого листа и вам нужны эти фильтры (если вы ранее отключили их по какой-либо причине), затем> выберите пустую строку (как описано в # 2); > Включите все свои фильтры (как описано в # 4).

Извините, что так многословен, но после того, как вы сделаете это несколько раз, вам, скорее всего, понравится (если вы часто используете фильтры).


0

Шаг 1 Выделите нижнюю строку заголовка. и затем Вы можете выбрать только ячейки в строке или выделить всю строку.

Шаг 2, затем нажмите «Сортировка и фильтр» на вкладке «Главная», затем вы можете выбрать «Фильтр». Excel добавляет стрелки фильтра ко всем именам столбцов.

Шаг 3, затем нажмите стрелку, а затем выберите вариант сортировки, чтобы отсортировать всю таблицу по этому столбцу.

Шаг 4, наконец, нажмите «Sort & Filter» и снова выберите «Filter», если вы хотите избавиться от стрелок, но сохраните область сортировки, определенную фильтром. теперь вы можете сортировать нормально, Excel игнорирует лишние строки заголовка


-1

Другой способ сделать это в некоторых случаях - ввести значение во втором столбце, которое заставит фильтр включить его, а затем привести текст этой ячейки в соответствие с фоновым цветом ячейки. Не очень красиво, поскольку заголовок (строка 1) не будет горизонтально центрирован в ячейке, но будет работать ...


-1

У меня была такая же проблема, и я нашел решение, которое работает для меня. Для каждой строки в заголовке, которую вы не хотите видеть, вы делаете буквы белыми (или цвет фона). При сортировке вы не видите одинаковые заголовки в строках. Плохо, когда вы хотите что-то изменить, но в этом случае вы также можете сделать их светло-серыми.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.