Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何跳过Excel中的数据透视表中的空白页_Excel_Vba - Fatal编程技术网

如何跳过Excel中的数据透视表中的空白页

如何跳过Excel中的数据透视表中的空白页,excel,vba,Excel,Vba,由于将来的添加,数据透视表的源数据范围比现有数据长。对于这个原因,在数据透视表过滤器中,我有一个名为“Blank”的数据透视项 下面的代码每次更改数据透视项,然后打印数据透视项,然后是下一个数据透视项,依此类推 问题:它还打印没有信息的“空白”数据透视项。这就是为什么在计算页面时,我在行pivF.PivotItems.Count-1中添加了“-1” 问题:有人能帮我修改下面的代码以跳过该空白页吗(或者有人能告诉我如何删除该空白数据透视项) 两项建议: 从实际数据源动态确定填充单元格的范围,然后更

由于将来的添加,数据透视表的源数据范围比现有数据长。对于这个原因,在数据透视表过滤器中,我有一个名为“Blank”的数据透视项

下面的代码每次更改数据透视项,然后打印数据透视项,然后是下一个数据透视项,依此类推

问题:它还打印没有信息的“空白”数据透视项。这就是为什么在计算页面时,我在行
pivF.PivotItems.Count-1中添加了“-1”

问题:有人能帮我修改下面的代码以跳过该空白页吗(或者有人能告诉我如何删除该空白数据透视项)

两项建议:

  • 从实际数据源动态确定填充单元格的范围,然后更改数据透视表上的数据源以匹配
  • 例如,假设您通过VBA确定的
    activeRange
    为Sheet1!A1:M2555:

    pivF.ChangePivotCache ActiveWorkbook.PivotCaches.Create( _
         SourceType:=xlDatabase, SourceData:=activeRange)
    
  • 更好的选择是,如果可以,将源数据更改为表(也称为ListObject),然后使ListObject成为数据源,而不是标准范围。更改内容时,ListObjects更擅长动态调整大小。这可能会排除扩展范围以包括空行的需要
  • 例如:

    Dim tab as ListObject
    Set tab = ws.ListObjects("Table1")
    
    pivF.ChangePivotCache ActiveWorkbook.PivotCaches.Create( _
         SourceType:=xlDatabase, SourceData:=tab)
    

    或者,您可以在设计时将表作为源文件

    。将源数据格式化为表是最简单的解决方案。
    Dim tab as ListObject
    Set tab = ws.ListObjects("Table1")
    
    pivF.ChangePivotCache ActiveWorkbook.PivotCaches.Create( _
         SourceType:=xlDatabase, SourceData:=tab)