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
    

      


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM