VBA设置数据透视表xlRunningTotal无效,显示N/A问题求助
解决数据透视表运行总计字段显示N/A的问题
我碰到过好几个类似的情况,你遇到的问题核心在于:运行总计(xlRunningTotal)必须指定一个基准字段(BaseField),Excel需要知道按照哪个行/列维度来累计数值,否则就会返回N/A。而普通的xlSum求和不需要这个设置,所以能正常显示。
问题分析
你的代码里只设置了.Calculation = xlRunningTotal,但没告诉Excel要基于哪个字段来累计——比如日期、序号或者某个有序的类别字段。缺少这个关键参数,Excel无法确定累计的维度,自然就显示N/A了。
修正后的代码示例
假设你的数据透视表行区域有一个用于累计的字段(比如叫"OrderDate",你需要换成自己实际的字段名),修改代码如下:
Dim pt As PivotTable Set pt = ActiveSheet.PivotTables(sShtname) ' 添加数据字段 pt.AddDataField pt.PivotFields("my_fav_100"), "my_fav_100_2", xlSum ' 设置运行总计:必须指定BaseField和BaseItem With pt.PivotFields("my_fav_100_2") .Calculation = xlRunningTotal ' 替换成你行/列区域的实际字段名,比如日期、序号等有序字段 .BaseField = "OrderDate" ' 设置为xlPrevious表示从第一个值开始依次累计 .BaseItem = xlPrevious .Style = "Comma" .NumberFormat = "_(* #,##0_);_(* (#,##0);_(* ""0""??_);_(@_)" End With
关键注意事项
- BaseField必须是行或列区域的字段:不能是值区域的字段,得是你用来分组的那个维度(比如日期、月份、订单编号)。
- 确保BaseField是有序的:如果是日期字段,要先给它排序(升序或降序),否则累计结果会混乱。
- 变量引用统一:你的原代码里混用了
ActiveSheet.PivotTables(sShtname)和pt,建议先把透视表对象赋值给变量pt,这样代码更清晰也不容易出错。
如果还是有问题,可以检查:
- 数据源里的"my_fav_100"字段有没有空值或非数值内容?
- 透视表的行/列字段有没有正确添加?
内容的提问来源于stack exchange,提问作者vb_101
相关产品推荐
相关产品推荐

