我正在尝试生成一个Excel数据透视表,它根据用户指定的值显示和比较销售代表收入数据,例如InvoiceYear。
此数据来自SSAS多维数据集,我已使用PowerPivot连接到它。我在数据模型中有多维数据集中的列,我正在尝试在“表属性”窗口中编辑MDX代码以创建一些新列。
到目前为止,这可以使用,但InvoiceYear值被硬编码为' 2010'在这一刻。我需要一种方法让这段代码接受用户在excel工作表中输入单元格的值。
我只是一个初学者,所以我不知道这是否可能。
如果这种方法不可行,我真的需要找到另一种方法来做到这一点。从另一侧来到它并在单元格通过宏或vba更改时刷新列?其他一些解决方案?
以下是“编辑表属性”窗口中的内容。这样可以正常工作,但我不能像这样硬编码Year值,否则用户将无法指定自定义Year值。我已经尝试了一些我能想到的引用工作表中的单元格,但该列通常只显示为空,没有错误。
WITH MEMBER RentalSales AS
CASE when [SalesRep_Dim].[InvoiceYear].currentmember.membervalue = '2010' then [Measures].[LineAmountMST] else 0 end
SELECT NON EMPTY { Measures.RentalSales, [Measures].[LineAmountMST] } ON COLUMNS,
NON EMPTY { ([SalesRep_Dim].[InvoiceMonth].[InvoiceMonth].ALLMEMBERS * [SalesRep_Dim].[InvoiceYear].[InvoiceYear].ALLMEMBERS * [SalesRep_Dim].[SaleRep].[SaleRep].ALLMEMBERS * [SalesRep_Dim].[ItemGroup].[ItemGroup].ALLMEMBERS * [SalesRep_Dim].[Site].[Site].ALLMEMBERS * [SalesRep_Dim].[Source].[Source].ALLMEMBERS * [SalesRep_Dim].[Type].[Type].ALLMEMBERS ) } DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS
FROM ( SELECT ( -{ [SalesRep_Dim].[InvoiceMonth].&[]&[0], [SalesRep_Dim].[InvoiceMonth].[All].UNKNOWNMEMBER } ) ON COLUMNS FROM [GMFSalesTransRepRevenue]) CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS
答案 0 :(得分:0)
我不相信你现有的做法是可能的。但是,如果您切换到使用Power Query从SSAS获取数据并加载到Power Pivot,则应该可以。
Power Query可以按照here所述查询SSAS。用户输入的Excel工作簿中的read a cell,并在Power Query中过滤来自SSAS的数据。
答案 1 :(得分:0)
您应该查看切片器,它们在视觉上更具吸引力,您可以使用它们通过一个选择过滤多个数据透视表。
设置报告过滤器并将切片器设置为相同的属性,您可以使用Cell作为公式参考,并使用切片器进行用户输入。
这应该像选择数据透视表一样简单,转到插入Excel工具栏,在过滤器下显示"切片器"。
选择您要过滤的属性,并完成切片器。
答案 2 :(得分:0)
可以选择创建回写指标。您可以将其值转换为在数据透视表中发生的计算成员。然而,这不是最佳做法。我建议避免这种方法。
步骤:
(StrToMember('[SalesRep_Dim]。[InvoiceYear]。& ['+ Cstr([Measures]。[WriteBackMeasure])+']'),[Measures]。[LineAmountMST])
其中[Measures]。[WriteBackMeasure]是你的回写指标,如果[Measures]。[WriteBackMeasure] = 2010那么你将获得以下内容:
([SalesRep_Dim]。[InvoiceYear]。& [2010],[Measures]。[LineAmountMST])