数据透视表和日期

时间:2016-11-06 00:58:00

标签: excel vba pivot pivot-table

我是一个新手,我是一个热心的学习者,一个犯很多错误的初学者。在我的数据透视表上,它正在拿起两年的日期,我热衷于只选择前两个最近的日期,而不是使用切片机。我试图让它有点动态,但我不断收到错误消息,

我试图在我的电子表格中设置来自日期和两个日期的单元格,或者是选择前两个最近日期的代码。我真的希望代码工作并拉出我的头发,因为我有其他几个数据透视表。每次我把单元格引用放在其间,日期就是我不断编码错误。

我希望枢轴项目像以前一样更具动态性,我会尝试在日期和日期添加验证,以使其更具动态性。

我希望枢轴项目是x第一个日期,y是第二个日期,指的是工作表上的两个单元格,我可以在工作表上修改,另一个代码只选择前两个最近的日期。

Sub DateSlection ()

 With ActiveSheet
.PivotTables("PivotTable4").PivotFields("Date")
        .PivotItems("11/2/2016").Visible = True
        .PivotItems("10/26/2016").Visible = True
    End With
    End Sub

亲切的问候

阿里

1 个答案:

答案 0 :(得分:0)

对于动态过滤器,您可以执行以下操作:

Sub DateSlection ()

Dim startDate As String
Dim endDate As String

With ActiveSheet
    'Set your date parameters in the required date format 
    '- looks like you need US 
    startDate = Format(.Range("A1").Value, "mm/dd/yyyy")
    endDate = Format(.Range("A2").Value, "mm/dd/yyyy")

    'clear the existing filter and add the new
    .PivotTables("PivotTable4").PivotFields("Date").ClearLabelFilters
    .PivotTables("PivotTable4").PivotFields("Date").PivotFilters.Add Type _
            :=xlDateBetween, Value1:=startDate, Value2:=endDate
End With

End Sub

我也理解你想获得数据透视表中的前两个日期?如果是这样,你可以这样做:

ActiveSheet.PivotTables("PivotTable4").PivotFields("Date").PivotItems(1)
ActiveSheet.PivotTables("PivotTable4").PivotFields("Date").PivotItems(2)

要获得最后两个日期,您可以这样做:

With ActiveSheet.PivotTables("PivotTable4").PivotFields("Date")
    ptCount = .PivotItems.Count
    last = .PivotItems(ptCount)
    secondLast = .PivotItems(ptCount - 1)
End With