我最近开始帮助在 Excel 中使用 Essbase/SmartView 进行报告。我正在尝试获取 Essbase 报告;它将我的项目层次结构的所有级别组合到一个列中 - 而是将其转换为一个表。Essbase 似乎没有这个功能,所以我一直试图弄清楚如何在 VBA 中做到这一点。下面是我正在尝试做的一个示例以及我的宏,它目前仅适用于在表中填充项目 ID 和预算。我对 VBA 很陌生,所以我希望有人可以为我指出如何接近第 1、2 和 3 级的正确方向。我认为我最好的选择是基于前两个字符的某种查找例如“L2”,但我感谢您提供的任何指导。
当前的
+-----------------+--------+
| Project | Budget |
+-----------------+--------+
| P1200 | 150 |
| P1400 | 200 |
| L3 Program 3 | 350 |
| P1100 | 250 |
| P1300 | 150 |
| L3 Program 2 | 400 |
| L2 Initiative 2 | 750 |
| P2200 | 300 |
| P2400 | 200 |
| P2600 | 300 |
| L3 Program 1 | 800 |
| L2 Initiative 1 | 800 |
| L1 Division | 1550 |
+-----------------+--------+
期望的
+-------------+-----------------+--------------+---------+--------+
| L1 | L2 | L3 | Project | Budget |
+-------------+-----------------+--------------+---------+--------+
| L1 Division | L2 Initiative 2 | L3 Program 3 | P1200 | 150 |
| L1 Division | L2 Initiative 2 | L3 Program 3 | P1400 | 200 |
| L1 Division | L2 Initiative 2 | L3 Program 2 | P1100 | 250 |
| L1 Division | L2 Initiative 2 | L3 Program 2 | P1300 | 150 |
| L1 Division | L2 Initiative 1 | L3 Program 1 | P2200 | 300 |
| L1 Division | L2 Initiative 1 | L3 Program 1 | P2400 | 200 |
| L1 Division | L2 Initiative 1 | L3 Program 1 | P2600 | 300 |
+-------------+-----------------+--------------+---------+--------+
当前宏
Sub TabularView()
Dim esData As Worksheet
Dim tabView As Worksheet
Set esData = ThisWorkbook.Sheets("Sheet1")
Set tabview = ThisWorkbook.Sheets("TabularView")
rptLR = esData.Cells(Rows.Count, 1).End(xlUp).Row + 1
y = 2
For x = 9 to rptLR 'Data starts in row 9
If Left(esData.Cells(x, 1).Text, 1) = "P" Then
tabView.Cells(y,4) = esData.Cells(x,1)
tabView.Cells(y,5) = esData.Cells(x,2)
y = y + 1
End If
Next x
End Sub