如何按月份名称筛选excel列?
在excel中给出此列表: 当用户选择月份名称时,如何筛选行(基于“出生日期”列)?这是我到目前为止所做的,但我不知道如何操作如何按月份名称筛选excel列?,excel,vba,filter,Excel,Vba,Filter,在excel中给出此列表: 当用户选择月份名称时,如何筛选行(基于“出生日期”列)?这是我到目前为止所做的,但我不知道如何操作DOB列: Private Sub ComboBox2_Change() On Error Resume Next If Me.ComboBox2.Value = "<<All>>" Or Me.ComboBox2.Value = "" Then If ActiveSheet
DOB
列:
Private Sub ComboBox2_Change()
On Error Resume Next
If Me.ComboBox2.Value = "<<All>>" Or Me.ComboBox2.Value = "" Then
If ActiveSheet.AutoFilterMode Then ActiveSheet.AutoFilterMode = False
Else
Sheet1.Range("D4").AutoFilter field:=4, Criteria1:=Me.ComboBox2.Value
End If
End Sub
Private子组合框2_Change()
出错时继续下一步
如果Me.ComboBox2.Value=“”或Me.ComboBox2.Value=“”,则
如果是ActiveSheet.AutoFilterMode,则ActiveSheet.AutoFilterMode=False
其他的
表1.范围(“D4”)。自动筛选字段:=4,准则1:=Me.ComboBox2.Value
如果结束
端接头
我不知道应该在标准1上加什么。首先,您应该在代码中将所选月份转换为一个值(例如2月)。然后,您可能应该使用这样的for循环从DOB colmun中提取月份(其中selected month是在组合框中选择的相应月份的编号):
Dim当前月
对于i=4到13
当前月份=月份(范围(“D”和“i”)。值)
如果选择了当前月份,则“该月份与所选月份不对应”
范围(“D”&i).EntireRow.Hidden=True“隐藏行”
接下来我
如果有帮助,请告诉我。使用自动筛选几个月
- 通过使用宏记录器,我得出结论,将
设置在Criteria1
和21
之间,并将32
设置为Operator
将按月过滤xlFilterDynamic
- 假设
位于工作表上,代码位于工作表的模块中ComboBox1
Option Explicit
Private Sub ComboBox1_Change()
Me.AutoFilterMode = False
If ComboBox1.Value <> "<<All>>" And ComboBox1.Value <> "" Then
With Me.Range("A3").CurrentRegion
.AutoFilter 4, ComboBox1.ListIndex + 20, xlFilterDynamic
End With
End If
End Sub
选项显式
专用子组合框1_Change()
Me.AutoFilterMode=False
如果ComboBox1.Value“”和ComboBox1.Value“”,则
与Me.范围(“A3”).当前区域
.AutoFilter 4,ComboBox1.ListIndex+20,xlFilterDynamic
以
如果结束
端接头
填充组合框
Sub populateComboBox()
Const cList As String = "<<All>>,January,February,March,April,May,June," _
& "July,August,September,October,November,December"
Dim cData() As String: cData = Split(cList, ",")
ComboBox1.List = cData
End Sub
Sub-populateComboBox()
Const cList As String=“、一月、二月、三月、四月、五月、六月,”_
&七月、八月、九月、十月、十一月、十二月
Dim cData()作为字符串:cData=Split(cList,“”)
ComboBox1.List=cData
端接头
在某些情况下,它可以工作,但如果我选择另一个月,列表将不会返回任何内容(它会隐藏所有列表)。您可能需要在筛选之前取消隐藏所有行。非常感谢您,先生。这比我做的更干净、更高效。如果你不介意的话,先生,为什么列表索引上有+20?我的意思是,它在组合框中扮演什么角色?ListIndex表示组合框中当前选定项的索引。由于您已将
作为第一项,因此它具有索引0
,而月份则方便地具有索引1
到12
(1
用于一月
,2
用于二月
)。正如我(有点含蓄地)在回答中所写的那样,Criteria1
对于1月
必须是21
,对于2月必须是22
。。。因此20+1=21
用于1月
,20+2=22
用于2月
…我明白了。再次非常感谢您,先生。@FaneDuru:谢谢。如果我早一点找到那个链接,我肯定不需要这么长时间。我刚用了宏录音机。大部分时间都是在聪明地认为11
就是xlFilterValues
时浪费的,这还能是什么呢。但我在代码中将xlFilterValues
替换为11
(从宏记录器读取)时发现了xlFilterValues
,然后最后检查Microsoft文档。工作簿也崩溃了,冻结了…我以为我的Excel
最终死了,但它没有。我从来没有想过这可能发生在一个错误的参数上。
Sub populateComboBox()
Const cList As String = "<<All>>,January,February,March,April,May,June," _
& "July,August,September,October,November,December"
Dim cData() As String: cData = Split(cList, ",")
ComboBox1.List = cData
End Sub