微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Excel VBA为Power Pivot表创建数据模型连接以获取不同的值-错误

如何解决Excel VBA为Power Pivot表创建数据模型连接以获取不同的值-错误

在宏中,我试图基于2个标准来获取不同的值进行计数。以前,我曾在外部报告中使用公式添加计数 = IFERROR(ROWS(UNIQUE(FILTER(。)。这适用于大多数供应商,但是当从中计算原始数据时,对其他供应商来说,它很大,它只会显示1或0。

我已切换为尝试将原始数据表添加到数据透视表中,并将其添加到与原始数据表相同的工作簿中的数据模型中,以便我可以轻松地获得不同的count列,然后使用 GETPIVOTDATA 即可将计数添加到外部报告中的行。这都是较大宏的一部分。在某些供应商上这可以正常工作,而其他供应商在创建数据模型连接时会出错。 “运行时错误1004:数据模型存在问题,导致Microsoft Excel无法打开此工作簿。请尝试重新启动Microsoft Excel。”

在创建新的连接和新的数据透视表之前,我尝试清除连接,但是仍然出现错误。当我停止宏以测试添加超级数据透视表并手动添加到模型时,我的所有PowerPivot选项以及尝试通过普通“数据透视表”选项添加到数据模型的选项均显示为灰色。

这是我第一次在宏中使用PowerPivot,但是在使用大数据集而不挂起或仅给出“ 1”或“ 0”的情况下,我似乎找不到更简单的解决方案来获得不同的值。

当前代码

    Dim wsPivotModel As Worksheet
    Dim SDCPivotCache As PivotCache
    Dim PvtSDCmodel As Pivottable
    Dim SDCconnection As WorkbookConnection
    Set wsPivotModel = MainWB.Sheets.Add
    
    ' delete existing internal connections if necessary
    For Each SDCconnection In MainWB.Connections
        If SDCconnection.Type = xlConnectionTypeWORKSHEET Then SDCconnection.Delete
    Next SDCconnection
    
    'Create new connection
    Set SDCconnection = MainWB.Connections.Add2("WorksheetConnection_" & MainWB.Name & "!Table_SDCdata","",_
        "WORKSHEET;" & DataPath & "\" & MainWB.Name,MainWB.Name & "!Table_SDCdata",7,True,False)
    
    'create and configure new pivotcache
    Set SDCPivotCache = MainWB.PivotCaches.Create(SourceType:=xlExternal,SourceData:=SDCconnection,Version:=6)
    With SDCPivotCache
        .RefreshOnFileOpen = False
        .MissingItemsLimit = xlMissingItemsNone
    End With
    
    'Create and configure new pivottable
    Set PvtSDCmodel = SDCPivotCache.CreatePivottable(TableDestination:=wsPivotModel.Name & "!R1C1",TableName:="PvtSDCmodel",DefaultVersion:=6)


    With wsPivotModel.Pivottables("PvtSDCmodel")
        .RepeatAllLabels xlRepeatLabels

        With .CubeFields("[Table_SDCdata].[Region]")
            .Orientation = xlRowField
            .Position = 1
        End With
        With .CubeFields("[Table_SDCdata].[Format]")
            .Orientation = xlRowField
            .Position = 2
        End With
        
        .CubeFields.GetMeasure "[Table_SDCdata].[Site]",xlCount,"Count of Site"
        .Adddatafield .CubeFields("[Measures].[Count of Site]"),"Count of Site"
        .InGridDropZones = True
        .RowAxisLayout xlTabularRow
        
        With .PivotFields("[Measures].[Count of Site]")
            .Caption = "distinct Count of Site"
            .Function = xldistinctCount
        End With
        
    End With
       
'Get store format count in province from SDC
    Dim ref As Variant
    Dim sFormula As String
    
    ref = "[" & MainWB.Name & "]" & wsPivotModel.Name
    sFormula = "=GETPIVOTDATA(""[Measures].[distinct Count of Site]"",'" & ref & "'!$A$1,""[Table_SDCdata].[Region]"",""[Table_SDCdata].[Region].&[""&[@Region]&""]"",""[Table_SDCdata].[Format]"",""[Table_SDCdata].[Format].&[""&[@Format]&""]"")"
        
    With wb.Worksheets("Number of Stores Ranged").ListObjects("Table_Number_of_Stores_Ranged")
        With .ListColumns("Total Number of Stores : In Province").DataBodyRange
            .NumberFormat = "General"
            .Formula = sFormula
            .Value = .Value
        End With
               

关于为什么会发生此错误并在之后将所有选项都变灰的任何建议? 或是否有其他建议,如何在Power Pivot无法正常工作的情况下轻松地从大量数据中获得不重复计数(应该这样做)?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。