如何在Excel中获取多行排序/过滤标头


17

我有一个电子表格,其中使用2行作为标题信息。通过选择一列进行的过滤隐式地假定标题信息只有1行。排序具有标题行复选框,但是仅切换将第一行视为标题。

有没有一种方法可以使Excel将前两行视为标题?

Answers:


18

否。自动过滤时,请忽略您范围内的第一行。这样,自动过滤器按钮仅出现在底部标题行上,并且数据将被过滤。我希望现在您的第二个标题行被拉入您的“数据”中。

您不能选择单个单元格,而是需要excel来解决。您必须选择要excel包含的单元格范围。


它是。我没有意识到我可以选择一个特定的单元格来开始过滤,而不是进行列选择。
丹·尼利,2009年

7

使用多个标题行完成排序功能的一种简单方法是在要作为排序依据的行的上方插入空白行(理想情况下,它应位于标题的最底端;如果不是,则这样做)。然后单击“行”号突出显示空白行。右键单击该行,然后选择“隐藏”。新的空白行将消失,标题以您希望的样子保留,Excel将把类别行解释为标题。


2

如果选择整行(通过选择行左侧的行号),然后启用过滤器(“数据”>“过滤器”),它将为您提供所选行以下所有内容的过滤器,而忽略其上方的所有内容。


这是正确的答案,也是最简单的。这在excel 2016中有效,因为这是一个更老的问题。
肖恩

谢谢!为什么这里的其他人都这么复杂?
user291695 '17

@ user291695:我猜想从OP上的日期开始,这可能是对旧版本的MS Office的处理方式,如较早的答案,而较新的答案只是没有意义。虽然不确定。
Fr0zenFyr

1

要过滤具有2个标题行的列表,其中第二行包含列标题,这是我所做的。

  • 剪下第一行
  • 关闭过滤
  • 再次打开过滤,以便过滤第二行。这将告诉Excel哪个是具有列标题的行。
  • 将第一行重新粘贴到具有过滤器和列标题的行上方
  • 检查过滤器是否现在可以正常工作,第二行的列标题为。

1

好的,即使将文件另存为Excel 2007并重新打开,以下内容也可以在Excel 2010中工作(因此大概也可以在Excel 2007中工作...)

假设有3行标题。将电子表格过滤器范围设置为从单元格$ A $ 4开始,并确保它涵盖了要排序的数据的全部范围。保存文件。

此后,任何排序都将第1至3行视为标题,因此仅从第4行开始进行排序。-除非您更改或取消过滤范围。


承诺的回应对我有用。添加过滤器时,Excel会假定其上方的每一行都是标题。就我而言,我有一个2行标题。我选择了第2行,然后打开了过滤器。然后,我选择了自定义排序并选中了标题框。发生排序时,第1行和第2行都保留为标题。

有趣的是,当我在Excel 1911中执行此操作时,使用过滤器的下拉列表进行了排序,但自定义排序不起作用:第2行保持不变,但第1行与其他所有内容一起进行了排序。因此,我实际数据中的“最低”值现在位于第1行中,而原始第1行则停留在我的数据范围内。
pateksan

1

我知道我使用的是SuperUser而不是StackOverflow,但是可以在Excel 2016上使用VBA代码找到此问题的解决方案。

我有类似(更复杂)的问题。

我想在显式列上添加一些过滤器,而不是仅在第1行上添加一些过滤器,如下面的屏幕截图所示。

在此处输入图片说明

我尝试使用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

单元格A1和A2未合并。

B.在第2行的所有单元格上添加自动筛选

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

为第1行以外的所有行中的单元格生成自动筛选。

C.删除或隐藏某些列的FILTER Combobox

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

列“ C”的DropBox隐藏。

D.合并未合并的单元格以恢复原始状态

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

单元格A1和A2再次合并。


0

Excel 2007可以智能地检测您是否具有多行标题。我在写这篇文章之前做了一个简单的实验。

在进行第一次排序之前,将光标放在标题的正下方。而已!排序很好,过滤很好。Excel忽略了标题的第一行。它只是将第二行作为真实标题处理。


3
不,这不起作用。在某些情况下,Excel 07可以自动检测多行标题,但这是基于单元格的内容,而不是单击的单元格。例如,如果前两行是文本,而下面的所有内容都是数字,则Excel将假定前两行都是标题。
乔什

0

突出显示需要排序的单元格(标题之外的所有单元格),然后选择过滤器。


0

我正在使用Excel2010。要保留标题行(例如前4行),请突出显示第5行,然后打开过滤器。第1-4行从过滤器中排除。


0

我遇到了同样的问题,因此每个人的贡献使我了解了迄今为止对我有利的工作方式。

  1. 在多行标题下方添加一个空白行(如果标题为5行信息和/或奇数单元格大小,则新的空白行将为Row6)。

  2. 单击第6行(最左侧/实际单击“ 6”(Excel行号)以选择整行/至无穷大)。在完成下面的#3和#4之前,请确保不要单击任何其他CELL,否则将“取消选择”该行。您想将其保留为“选定”状态。

  3. 转到“查看”选项卡>“冻结窗格”>“取消冻结(先清除此操作)”>“冻结”。这将冻结您的5行标题和空白行(row6)。

  4. 按住“ ALT”,然后按以下键:D,F,F(这是打开和关闭/清除工作表上所有过滤器的快捷方式。

  5. 从现在开始,每当您返回使用该表格并且需要打开这些过滤器时(如果您之前出于某种原因将其关闭),然后>选择空白行(如#2中所述);>打开所有过滤器(如#4中所述)。

抱歉,这么罗word,但是重复几次之后,可能会喜欢它(如果您经常使用过滤器)。


0

步骤1突出显示底部标题行。然后您可以只选择一行中的单元格,也可以选择整行。

步骤2接下来,单击“主页”选项卡上的“排序和筛选”,然后可以选择“筛选”。Excel将过滤器箭头添加到所有列名称。

然后,第3步单击箭头,然后选择排序选项,以按该列对整个表进行排序。

步骤4最后,如果您想摆脱箭头,请再次单击“排序和筛选”,然后再次选择“筛选器”,但要保留筛选器定义的排序区域。现在您可以正常排序,Excel会忽略多余的标题行


-1

在某些情况下,另一种完成方法是在第二列中输入一个值,该值将使过滤器包括该值,然后使该单元格的文本与该单元格的背景色匹配。由于标题(行1)不会在单元格中水平居中,因此效果不佳...


-1

我遇到了同样的问题,找到了适合我的解决方案。对于您不想看到的标题中的每一行,您将字母设置为白色(或backgroundcolor)。排序时,在行中看不到所有相同的标题。当您想更改某些内容时会很糟糕,但是在那种情况下,您也可以使它们变成浅灰色。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.