Answers:
如果选择整行(通过选择行左侧的行号),然后启用过滤器(“数据”>“过滤器”),它将为您提供所选行以下所有内容的过滤器,而忽略其上方的所有内容。
好的,即使将文件另存为Excel 2007并重新打开,以下内容也可以在Excel 2010中工作(因此大概也可以在Excel 2007中工作...)
假设有3行标题。将电子表格过滤器范围设置为从单元格$ A $ 4开始,并确保它涵盖了要排序的数据的全部范围。保存文件。
此后,任何排序都将第1至3行视为标题,因此仅从第4行开始进行排序。-除非您更改或取消过滤范围。
我知道我使用的是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再次合并。
我遇到了同样的问题,因此每个人的贡献使我了解了迄今为止对我有利的工作方式。
在多行标题下方添加一个空白行(如果标题为5行信息和/或奇数单元格大小,则新的空白行将为Row6)。
单击第6行(最左侧/实际单击“ 6”(Excel行号)以选择整行/至无穷大)。在完成下面的#3和#4之前,请确保不要单击任何其他CELL,否则将“取消选择”该行。您想将其保留为“选定”状态。
转到“查看”选项卡>“冻结窗格”>“取消冻结(先清除此操作)”>“冻结”。这将冻结您的5行标题和空白行(row6)。
按住“ ALT”,然后按以下键:D,F,F(这是打开和关闭/清除工作表上所有过滤器的快捷方式。
从现在开始,每当您返回使用该表格并且需要打开这些过滤器时(如果您之前出于某种原因将其关闭),然后>选择空白行(如#2中所述);>打开所有过滤器(如#4中所述)。
抱歉,这么罗word,但是重复几次之后,可能会喜欢它(如果您经常使用过滤器)。
我遇到了同样的问题,找到了适合我的解决方案。对于您不想看到的标题中的每一行,您将字母设置为白色(或backgroundcolor)。排序时,在行中看不到所有相同的标题。当您想更改某些内容时会很糟糕,但是在那种情况下,您也可以使它们变成浅灰色。