由于数据透视表缓存,excel无法完成此任务
当我完成excel宏时,我非常激动,然后我的老板递给我一个大得多的文件,让我试着测试。大小差异从15000kb到275000kb。我只是希望它能继续运行。我错了。我遇到“Excel无法使用可用资源完成此任务”错误。所以我们试着在我同事的8core 16GB RAM机器上运行它。认为这会把它赶出公园。不。同样的错误,但是这次在第二个透视表上。所以,我假设错误在我的数据透视表函数中。有没有一种方法可以清除数据透视表的创建,比如清除缓存之类的由于数据透视表缓存,excel无法完成此任务,excel,vba,memory,pivot-table,excel-2013,Excel,Vba,Memory,Pivot Table,Excel 2013,当我完成excel宏时,我非常激动,然后我的老板递给我一个大得多的文件,让我试着测试。大小差异从15000kb到275000kb。我只是希望它能继续运行。我错了。我遇到“Excel无法使用可用资源完成此任务”错误。所以我们试着在我同事的8core 16GB RAM机器上运行它。认为这会把它赶出公园。不。同样的错误,但是这次在第二个透视表上。所以,我假设错误在我的数据透视表函数中。有没有一种方法可以清除数据透视表的创建,比如清除缓存之类的 Function CPT(ByRef Location()
Function CPT(ByRef Location() As String, Name As String, Data As String, ByRef Filters() As String, ByRef Rows() As String, ByRef Columns() As String _, ByRef Values() As String, ByRef Types() As String)
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
Data, Version:=xlPivotTableVersion15).createPivotTable _
TableDestination:=Worksheets(Location(0)).Range(Location(1)), TableName:=Name, _
DefaultVersion:=xlPivotTableVersion15
ActiveWorkbook.ShowPivotTableFieldList = True
'/////////////////////////////////////////////
'If it errors field name is probably incorrect
'/////////////////////////////////////////////
'Values
If (Not IsArrayEmpty(Values())) Then
For i = LBound(Values) To UBound(Values)
If (Types(i) = "Max") Then
ActiveSheet.PivotTables(Name).AddDataField ActiveSheet.PivotTables( _
Name).PivotFields(Values(i)), "Max of " & Values(i), xlMax
ElseIf (Types(i) = "Sum") Then
ActiveSheet.PivotTables(Name).AddDataField ActiveSheet.PivotTables( _
Name).PivotFields(Values(i)), "Sum of " & Values(i), xlSum
ElseIf (Types(i) = "Min") Then
ActiveSheet.PivotTables(Name).AddDataField ActiveSheet.PivotTables( _
Name).PivotFields(Values(i)), "Min of " & Values(i), xlMin
ElseIf (Types(i) = "Count") Then
ActiveSheet.PivotTables(Name).AddDataField ActiveSheet.PivotTables( _
Name).PivotFields(Values(i)), "Count of " & Values(i), xlCount
End If
Next i
End If
'Filters
If (Not IsArrayEmpty(Filters())) Then
For i = LBound(Filters) To UBound(Filters)
With ActiveSheet.PivotTables(Name).PivotFields(Filters(i))
.Orientation = xlPageField
End With
Next i
End If
'Rows
If (Not IsArrayEmpty(Rows())) Then
For i = LBound(Rows) To UBound(Rows)
With ActiveSheet.PivotTables(Name).PivotFields(Rows(i))
.Orientation = xlRowField
.Position = 1
End With
Next i
End If
'Columns
If (Not IsArrayEmpty(Columns())) Then
For i = LBound(Columns) To UBound(Columns)
With ActiveSheet.PivotTables(Name).PivotFields(Columns(i))
.Orientation = xlColumnField
End With
Next i
End If
End Function
有没有更有效的方法来实现透视表功能?我必须创造很多东西,所以我不想把每一个都编码出来 您是否尝试手动生成透视表?如果Excel文件大小确实是275MB,我怀疑Excel将无法正确处理数据透视表。您可能希望尝试通过查询数据表的数据源或从数据表生成的MS Access数据库生成透视表。如果所有宏都是手动完成的,则所有操作都正常工作。尽管有时会遇到困难(我的电脑很陈旧,老板的电脑不会有问题)。在添加/更改字段时,您是否尝试将透视表的
.ManualUpdate
属性设置为True
?看见