VBA如何一行实现引用数据透视表排除前3列的所有列范围
实现方案
你可以直接对透视表数据区域做偏移和大小重设实现需求,无需逐列引用合并,一行代码如下:
Set Rg = pt.DataBodyRange.Offset(0, 3).Resize(ColumnSize:=pt.DataBodyRange.Columns.Count - 3)
代码说明
pt.DataBodyRange对应你提到的包含数值、总计列的整个透视表数据区域Offset(0, 3)表示将区域整体向右偏移3列,跳过前3列的起始位置Resize(ColumnSize:=pt.DataBodyRange.Columns.Count - 3)表示将区域列数调整为总列数减去前3列,刚好覆盖所有剩余需要的列
如果需要排除的前3列包含透视表的行标签区域,把代码中的pt.DataBodyRange替换为pt.TableRange2即可(TableRange2包含行标签、数值、总计在内的整个透视表范围)。
兼容优化(可选)
为了避免透视表总列数≤3时出现报错,可以增加简单的边界判断:
If pt.DataBodyRange.Columns.Count > 3 Then Set Rg = pt.DataBodyRange.Offset(0, 3).Resize(ColumnSize:=pt.DataBodyRange.Columns.Count - 3) End If
内容的提问来源于stack exchange,提问作者Mario Di Noia
相关产品推荐
相关产品推荐

