【问题标题】:Control multiple slicers with a single prompt using vba使用 vba 通过单个提示控制多个切片器
【发布时间】:2015-05-26 19:34:54
【问题描述】:

我目前有一个包含大约 40 列数据的电子表格,其中 16 列是日期。我的任务是添加某种功能,以便更轻松地过滤日期和日期范围。

我所做的是将电子表格转换为 xml 表格,然后将切片器添加到每个使用日期的列中。我还添加了一个宏按钮来帮助清除选择。

但是我被告知我没有完全达到目标,因为他们希望该函数从一个中心函数(而不是各种切片器)过滤所有日期列

理想情况下,他们想要的是一个输入两个日期(开始和结束)的地方,并让整个文件过滤到这些日期为真的地方。

据说他们使用了一个使用 vba 宏完成此操作的电子表格,但我什至不知道如何开始控制切片器。

我确实创建了一个从给定日期范围自动过滤的 vba 代码,但我无法让它与多个过滤器一起使用(我必须将我的 xml 表转换回范围)

Public Sub allFilter()

    Dim lngStart As Long, lngEnd As Long

    lngStart = Range("B1").Value 'assume this is the start date

    lngEnd = Range("B2").Value 'assume this is the end date

    Range("M5:M900").AutoFilter field:=1, _

        Criteria1:=">=" & lngStart, _

        Operator:=xlAnd, _

        Criteria2:="<=" & lngEnd

End Sub

同样,理想情况下,他们希望能够输入日期范围并让所有过滤器都响应该输入,但我认为我已经创建了所有切片器,并且告诉所有切片器以相同的方式过滤可能会更容易.

对不起,如果这令人困惑。

【问题讨论】:

    标签: vba date excel


    【解决方案1】:

    我有类似的东西: 将 PT 调暗为可旋转 将数据调暗为 SlicerCache 将 DateSlicer 调暗为切片器

    Set PT = Sheets("Pivot").PivotTables("PivotTable1")
    Set Sdate = MyWorkbook.SlicerCaches.Add(PT, "Dates")'"Dates" is the header of the column
    Set DateSlicer = Sdate.Slicers.Add(SlicerDestination:=Sheets("Pivot"), Name:="Time period", Caption:="Dte", Top:=40 + 187.5 + 187.5, Left:=width_counter, Width:=144, Height:=187.5) 'Top Left WIDTH HEIGHT
    
    'Loop a slicer
    For Each sI In Sdate.SlicerItems
    
        Debug.Print "Caption; – > " & sI.Caption
        Debug.Print "Value; – > " + CStr(sI.Value)
        Debug.Print "Unique; Name; – > " + sI.Name
        Debug.Print "——————————————————————————"
        hoy = Format(Date, "mm/dd/yyyy")
    
        If CDate(sI.Value) < CDate(hoy) Then
        sI.Selected = False
        End If
    
    
    
    Next
    

    例如,您可以过滤日期以保留今天之后的日期

    【讨论】:

    • 嗨,它对我不起作用,设置数据透视表时卡住了。数据透视表是否必要?
    • 我假设你有一个,如果没有,使用类似的东西: Set PRange = Range("Table_D") ' Set MyWorkbook = ActiveWorkbook MyWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= PRange, Version:=xlPivotTableVersion14).CreatePivotTable TableDestination:=Sheets("Pivot").Range("A1"), TableName:="PivotTable1" _, DefaultVersion:=xlPivotTableVersion14 我认为切片器带有数据透视表。如果你有一个就更好了。
    猜你喜欢
    • 1970-01-01
    • 2018-10-14
    • 1970-01-01
    • 2021-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多