问题1:  问题2: 1.设法将数据区域都变为数值,空白的用0值替代。 2.先用前2行数据创建数据透视表,刷新后再重新选择全部区域在刷新 3.VBA直接生成分类汇总为求和的数据透视表。 Sub 新建透视表() Dim ws As Worksheet Dim ptcache As PivotCache Dim pt As PivotTable Dim prange As Range Set ws = Sheet1 For Each pt In Sheet2.PivotTables pt.TableRange2.Clear Next pt Set ptcache = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, _ SourceData:= Sheet1.Range("a1").CurrentRegion.Address) Set pt = ptcache.CreatePivotTable(tabledestination:=Sheet2.Range("a3"), _ tablename:="透视表1") pt.ManualUpdate = True pt.AddFields RowFields:="项目", ColumnFields:="Data" For Each prange In ws.Range(ws.Cells(1, 2), ws.Cells(1, 256).End(xlToLeft)) With pt.PivotFields(prange.Value) .Orientation = xlDataField .Name = " " & prange .Function = xlSum End With Next prange pt.ManualUpdate = False pt.ManualUpdate = True End Sub |