如上图,想在数据透视表中只显示红色区域的内容,手动勾选就比较繁琐。
实现思路:
- 先复制红色的内容。
- 鼠标停留在数据透视表【型号】列的任意数据上(通过该单元格可以获取数据透视表和字段)
- 由于数据透视表的字段不能全部取消筛选(至少要保留一项),所以先找到红色内的第一个有效值(本例中的红字本来就是数据源,所以都是有效的,实际使用可能会有不在列表的内容),让数据透视表只显示这一项
- 再循环红色内容,如果在列表内的全部显示(不在列表的也可以提取出来)
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