根据VBA中给定日期的四分之一过滤数据

时间:2013-12-22 17:05:59

标签: excel vba excel-vba

用户通过单击四个单选按钮中的一个(每个季度一个)来选择一年中的四分之一,然后我必须根据该季度过滤数据。我正在尝试使用自动过滤器,但我陷入困境,无法弄清楚要做什么。

编辑: 我试图修复的代码片段是这样的:

 With Worksheets("Sheet1").Range("A1")
    .AutoFilter Field:=2, Criteria1:=cell.Value, VisibleDropDown:=False
    max = Application.max(Range("E1:E22222").SpecialCells(xlCellTypeVisible))

在这里,我使用Autofilter只获得与“cell.value”匹配的结果。之后,我需要根据所选季度获得这些结果的子集。最后,我想存储特定字段的最大值。我想念的是我将如何根据特定季度进行过滤。所选季度作为数字保存在变量“selectedQuarter”中(第一季度为“1”,为DatePart(“q”,“12/22/2013”​​)的结果)。

1 个答案:

答案 0 :(得分:0)

您只需要将条件设置为一个操作符与日期连接的字符串,然后使用xlAnd运算符,如下所示:

Private Sub AF(w As Range, selectedQuarter As Integer)

Dim c1 As String, c2 As String

Select Case selectedQuarter
  Case 1
    c1 = "1/1/2014"
    c2 = "4/1/2014"
  Case 2
    c1 = "4/1/2014"
    c2 = "7/1/2014"
  Case 3
    c1 = "7/1/2014"
    c2 = "10/1/2014"
  Case 4
    c1 = "10/1/2014"
    c2 = "1/1/2015"
End Select

w.AutoFilter Field:=1, Criteria1:=">=" & c1, Operator:=xlAnd, _
                       Criteria2:="<" & c2

End Sub

注意,您可能已经有一个,但是您需要一个标题字段,该字段是范围的一部分,并且自动过滤器箭头将在其中休息。