AutoHotkey调用VBA实现批量精确筛选数据透视表某字段内容。

如上图,想在数据透视表中只显示红色区域的内容,手动勾选就比较繁琐。

实现思路:

  • 先复制红色的内容。
  • 鼠标停留在数据透视表【型号】列的任意数据上(通过该单元格可以获取数据透视表和字段)
  • 由于数据透视表的字段不能全部取消筛选(至少要保留一项),所以先找到红色内的第一个有效值(本例中的红字本来就是数据源,所以都是有效的,实际使用可能会有不在列表的内容),让数据透视表只显示这一项
  • 再循环红色内容,如果在列表内的全部显示(不在列表的也可以提取出来)
        clip := Trim(Clipboard, " `t`r`n")
        pt := xl.ActiveCell.PivotTable
        pf := xl.ActiveCell.PivotField
        xl.ScreenUpdating := False
        ;先找到第一个存在的项目firstItem
        Loop, Parse, clip, `n, `r
        {
            Try
            {
                pf.PivotItems(A_LoopField)
                firstItem := A_LoopField
                ;MsgBox,% firstItem
                Break
            }
        }
        ;只显示firstItem
        For k In pf.PivotItems
        {
            If (k.Value = firstItem)
                k.Visible := True
            Else If k.Visible
                k.Visible := False
        }
        ;显示剪切板项目
        Loop, Parse, clip, `n, `r
        {
            Try ;可能项目不在PivotItems里
                pf.PivotItems(A_LoopField).Visible := True
            ;Catch ;记录失败项
                ;MsgBox,% A_LoopField . "`n显示失败"
        }
        xl.ScreenUpdating := True
        Return
    

      

转载于:https://www.cnblogs.com/hyaray/p/10550143.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值