如上圖,想在數據透視表中只顯示紅色區域的內容,手動勾選就比較繁瑣。
實現思路:
- 先復制紅色的內容。
- 鼠標停留在數據透視表【型號】列的任意數據上(通過該單元格可以獲取數據透視表和字段)
- 由于數據透視表的字段不能全部取消篩選(至少要保留一項),所以先找到紅色內的第一個有效值(本例中的紅字本來就是數據源,所以都是有效的,實際使用可能會有不在列表的內容),讓數據透視表只顯示這一項
- 再循環紅色內容,如果在列表內的全部顯示(不在列表的也可以提取出來)
clip := Trim(Clipboard, " `t`r`n")pt := xl.ActiveCell.PivotTablepf := xl.ActiveCell.PivotFieldxl.ScreenUpdating := False;先找到第一個存在的項目firstItemLoop, Parse, clip, `n, `r{Try{pf.PivotItems(A_LoopField)firstItem := A_LoopField;MsgBox,% firstItemBreak}};只顯示firstItemFor k In pf.PivotItems{If (k.Value = firstItem)k.Visible := TrueElse If k.Visiblek.Visible := False};顯示剪切板項目Loop, Parse, clip, `n, `r{Try ;可能項目不在PivotItems里pf.PivotItems(A_LoopField).Visible := True;Catch ;記錄失敗項;MsgBox,% A_LoopField . "`n顯示失敗"}xl.ScreenUpdating := TrueReturn