2020-09-26 04:09发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
你好,
这是针对BPC 10.1的,是否可以在excel中导出维度层次结构(不是以parenth1作为属性的普通维度视图,而是通常在excel epm add in中显示的层次结构视图)
没有VBA的示例(使用本地成员):
本地成员:
LM001(在列轴之后):= IF(EPMDIM_CURRENT_MEMBER(P_ACCOUNT)=" MIN","",EPMMemberProperty(,EPMMemberID(EPMDIM_CURRENT_MEMBER(P_ACCOUNT))," HLEVEL")* 1)
LM002(在行轴之前):= MIN(OFFSET(EPMALLMEMBERS,0,1))
LM003(在LM001之后):= IF(EPMPOSITION(2)<>"",EPMPOSITION(2)-$ B $ 2,"")
LM004(在LM003之后):= IF(COLUMN()-COLUMN(E1)= EPMPOSITION(3),EPMDIM_CURRENT_MEMBER(P_ACCOUNT),"")
LM005(在LM004之后):= IF(COLUMN()-COLUMN(E1)= EPMPOSITION(3),EPMDIM_CURRENT_MEMBER(P_ACCOUNT),"")
...
直到:
LM012(在LM011之后):= IF(COLUMN()-COLUMN(E1)= EPMPOSITION(3),EPMDIM_CURRENT_MEMBER(P_ACCOUNT),"")
如果需要更多级别,请添加更多具有相同公式的本地成员。
可以对本地成员执行相同的操作...
抱歉,但是 不清楚!
您可以使用epm报告来标识成员身份...
"而是通常在excel epm add in中显示的层次结构视图"-请显示预期结果示例!
嗨,曼尼,
我认为您无法导出分层视图。 但是您可以使用常规的scv导出和Excel宏。
这是我过去使用的
公共wsSrc作为工作表,wsDst作为工作表公共lSrcFirstRow&,lChildCol&,lParentCol&,lSrcLastRow&,lDstFirstRow&,lDstFirstCol&公共lDstRow&
Sub MakeTree()昏暗的sNoParent作为字符串 '*********************** Anpassen ***** ******** 设置wsSrc = ThisWorkbook.Worksheets(" Sheet1")'源表 lSrcFirstRow = 2'源表中的第一行 lChildCol = 1'带有子ID的列 lParentCol = 2'带有父ID的列 sNoParent =""'父列中顶级ID的标记 设置wsDst = ThisWorkbook.Worksheets(" Sheet2")'目标表 lDstFirstRow = 1'目标表中的第一行 lDstFirstCol = 1'目标表中的第一列'*************************** ******************* lSrcLastRow = wsSrc.Cells(Rows.Count,lChildCol).End(xlUp).Row lDstRow = lDstFirstRow 调用ScanChilds(sNoParent,0)结束子
Sub ScanChilds(sParent作为字符串,iLevel作为整数) Dim lRow&对于lRow = lSrcFirstRow到lSrcLastRow 如果wsSrc.Cells(lRow,lParentCol)= sParent则 lDstRow,lDstFirstCol + iLevel)= wsSrc.Cells(lRow,lChildCol) lDstRow = lDstRow + 1 调用ScanChilds(wsSrc.Cells(lRow,lChildCol),iLevel + 1) 下一个lRow End Sub
最多设置5个标签!
没有VBA的示例(使用本地成员):
本地成员:
LM001(在列轴之后):= IF(EPMDIM_CURRENT_MEMBER(P_ACCOUNT)=" MIN","",EPMMemberProperty(,EPMMemberID(EPMDIM_CURRENT_MEMBER(P_ACCOUNT))," HLEVEL")* 1)
LM002(在行轴之前):= MIN(OFFSET(EPMALLMEMBERS,0,1))
LM003(在LM001之后):= IF(EPMPOSITION(2)<>"",EPMPOSITION(2)-$ B $ 2,"")
LM004(在LM003之后):= IF(COLUMN()-COLUMN(E1)= EPMPOSITION(3),EPMDIM_CURRENT_MEMBER(P_ACCOUNT),"")
LM005(在LM004之后):= IF(COLUMN()-COLUMN(E1)= EPMPOSITION(3),EPMDIM_CURRENT_MEMBER(P_ACCOUNT),"")
...
直到:
LM012(在LM011之后):= IF(COLUMN()-COLUMN(E1)= EPMPOSITION(3),EPMDIM_CURRENT_MEMBER(P_ACCOUNT),"")
如果需要更多级别,请添加更多具有相同公式的本地成员。
可以对本地成员执行相同的操作...
抱歉,但是 不清楚!
您可以使用epm报告来标识成员身份...
"而是通常在excel epm add in中显示的层次结构视图"-请显示预期结果示例!
嗨,曼尼,
我认为您无法导出分层视图。 但是您可以使用常规的scv导出和Excel宏。
这是我过去使用的
公共wsSrc作为工作表,wsDst作为工作表
公共lSrcFirstRow&,lChildCol&,lParentCol&,lSrcLastRow&,lDstFirstRow&,lDstFirstCol&
公共lDstRow&
Sub MakeTree()
昏暗的sNoParent作为字符串
'*********************** Anpassen ***** ********
设置wsSrc = ThisWorkbook.Worksheets(" Sheet1")'源表
lSrcFirstRow = 2'源表中的第一行
lChildCol = 1'带有子ID的列
lParentCol = 2'带有父ID的列
sNoParent =""'父列中顶级ID的标记
设置wsDst = ThisWorkbook.Worksheets(" Sheet2")'目标表
lDstFirstRow = 1'目标表中的第一行
lDstFirstCol = 1'目标表中的第一列
'*************************** *******************
lSrcLastRow = wsSrc.Cells(Rows.Count,lChildCol).End(xlUp).Row
lDstRow = lDstFirstRow
调用ScanChilds(sNoParent,0)
结束子
Sub ScanChilds(sParent作为字符串,iLevel作为整数)
Dim lRow&
对于lRow = lSrcFirstRow到lSrcLastRow
如果wsSrc.Cells(lRow,lParentCol)= sParent则
lDstRow,lDstFirstCol + iLevel)= wsSrc.Cells(lRow,lChildCol)
lDstRow = lDstRow + 1
调用ScanChilds(wsSrc.Cells(lRow,lChildCol),iLevel + 1) 下一个lRow
End Sub
一周热门 更多>