我有一份数据表,他要求我创建过滤器以显示特定数据,同时过滤日期。他希望能够使用选项按钮进行这些更改。我没有使用 Excel 或宏的经验,尽管我是一名技术人员,但我基本上一无所获。
表格从 A 列到 AB 列,从 1 行到 10,000 行。第 1 行到第 12 行构成标题。第 K 列标记为项目状态并包含以下单词:打开或者关闭。我需要能够打开和关闭此过滤器,显示所有项目或仅显示未完成的项目,并将两个选项按钮组合在一起。然后,我需要能够指定一个日期范围,该范围将起作用,无论是显示所有项目还是仅显示未完成的项目,本质上是进一步过滤数据。(例如,过去 6 个月内的所有未完成项目)必须按以下方式指定日期范围
不到 3 个月大
不到6个月大
不到1岁
1至3岁之间
3至5岁之间
5岁以上
另外 7 个按钮将放置在单独的组框中,用于选择这些日期范围,第七个按钮用于显示所有日期。此过滤器也必须从当前日期计算。我在这方面遇到的最大麻烦是,我不确定如何为过去五年创建一个过滤器,该过滤器在未来几年仍然准确,而无需手动更改其所基于的日期。
任何帮助都将不胜感激。
答案1
由于您所做的基本上是重复 7 次相同的事情,因此这里介绍如何重复一次。我在 3 列中设置了一些数据。数据显然与您的不同,但同样的想法适用。
工作表上的初始设置
这是我的 3 列,其中填充了一些数据。
VBA 编码
按 Alt + F11 打开 VBA 端。在顶部选择“插入”>“模块”,然后在此处输入类似以下内容:
Public Sub Filter1()
Range("A1:C1").AutoFilter
Range("$A$1:$C$6").AutoFilter Field:=1, Criteria1:="4"
End Sub
使用的代码说明
代码部分:
Range("A1:C1").AutoFilter
创建初始过滤器(您会看到下拉框出现的位置)
这部分当然是进行实际的过滤:
Range("$A$1:$C$6").AutoFilter Field:=1, Criteria1:="4"
Range 部分是要过滤的范围。请注意,如果您有多张工作表,则需要调出范围,例如“'Sheet1'!$A$1:$C$6”,而不仅仅是“$A$1:$C$6”。
字段编号是您要排序的列。在我的示例中,字段 1 是 A 列,因为 A 是我为范围选择的第一列。如果我为范围选择了类似“$B$1:$C$6”的内容,那么字段 1 将是 B 列。
Criteria1 是用来过滤字段的。请注意,条件可以是大于、小于等。因此,您可以使用 Criteria1:="<4",它将按预期执行。
将代码附加到按钮
我可以通过将矩形之类的形状拖到工作表上,右键单击该形状,然后单击“分配宏”,将上述代码附加到按钮。
然后我只需选择我创建的子名称,在本例中为 Filter1。
现在您可以对过滤器执行相同的操作,更改条件和范围。对要执行的过滤器数量重复此操作。