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

17

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

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

Дэн Нили
источник

Ответы:

18

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

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

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

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

Джордж Кэхилл
источник
2

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

user291695
источник
Это правильный ответ и самый простой. Это работает в Excel 2016, так как это гораздо более старый вопрос.
Шон
Спасибо! Почему все остальные здесь делают это так сложно?
user291695
@ user291695: Я предполагаю, что начиная с даты OP, это было так, как это было, вероятно, для старой версии MS Office, как и в старых ответах, а новые ответы просто не имеют смысла. Хотя точно не знаю.
Fr0zenFyr
1

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

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

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

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

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

deedgess
источник
Ответ от 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 снова объединены.

schlebe
источник
0

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

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

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

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

Laurah
источник
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).

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

Johnb
источник
0

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

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

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

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

Pte коучинг
источник
-1

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

Тони
источник
-1

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

Job Oosterhuis
источник