首先声明下面的代码为陈希章老师所写!经常使用EXCEL,但是发现数据透视表有一个很不合理的智能化功能!那就是在数值类型中会自动根据当前数据决定数值为计数型还是求和等,一一修改,从网上找到别人请教陈希章老师的一段代码,居然能解决这个批量求和的问题。 但是新的问题是执行处理后,数据是变成求和了,但标题上的名称没有变为求和,仍然为计数,很是头疼,需要再研究了。 数据透视表,现在是计数,如何一次性设置数值为求和? 1。打开Excel和你的文件,ALT+F11,插入=〉模块2。将以下代码复制到这个新的模块中3。ALT+F114。切换到数据透视表所在的工作表,ALT+F85。本例而言,你执行ChangeToSum这个程序 除了一次切换到求和方式,这里还提供了几个其他的程序,可以切换到其他的汇总方式,例如计数,平均等,你可以按照需要执行即可 (代码不包含分割线) Sub ChangeSubTotalType(myFunction As XlConsolidationFunction, s As String) '该程序为特定目的设计,作用是将当前工作表中所有数据透视表的计算字段一次性全部换成某种求和方式 If TypeName(ActiveSheet) <> "Worksheet" Then MsgBox "该程序只能在工作表中运行!", vbExclamation, "错误"Exit SubEnd IfDim sh As Worksheet: Set sh = ActiveSheet If sh.PivotTables.Count = 0 Then MsgBox "该程序要求工作表至少有一个数据透视表!", vbExclamation, "错误"Exit SubEnd IfIf sh.ProtectContents = True Then MsgBox "当前工作表被保护,无法执行操作!", vbExclamation, "错误"Exit SubEnd If Dim tb As PivotTable Dim dataField As PivotField For Each tb In sh.PivotTables If tb.DataFields.Count > 0 Then If MsgBox("即将对" & tb.Name & "的" & tb.DataFields.Count & "个字段进行操作,将汇总方式改变为" & s & _ "请确定需要这么做?", vbQuestion + vbYesNo + vbDefaultButton2, "确认") = vbYes Then For Each dataField In tb.DataFields dataField.Function = myFunctionNextEnd IfEnd IfNextSet sh = Nothing Set tb = Nothing End Sub Sub ChangeToSum() ChangeSubTotalType xlSum, "求和"End SubSub ChangeToAverage() ChangeSubTotalType xlAverage, "平均"End SubSub ChangeToCount() ChangeSubTotalType xlCount, "计数"End SubSub ChangeToCountNum() ChangeSubTotalType xlCountNums, "数学计数"End SubSub ChangeToMax() ChangeSubTotalType xlMax, "最大值"End SubSub ChangeToMin() ChangeSubTotalType xlMin, "最小值"End SubSub ChangeToProduct() End Sub以上代码非本人所创,再次声明!!!!