我找不到解决这个问题的好方法。我会尽力总结这个问题:
我使用 Hyperion Essbase Excel 插件在 OLAP 多维数据集内导航。我在这里试图完成的是将某些标签映射到维度的值。此维度内有多个级别的数据分组,因此一个子节点可以有多个级别的父节点。我可以事先知道成员是什么,但它们每个月都会发生变化,而查找缺失的成员可能很繁琐,所以我们要做的是使用父成员并放大其成员。但是,一个父节点内可能有多个不同的标签。我通过使用 VLOOKUP() 实现了部分功能,如果在我的表中找不到当前行,那么我会向下查找一行并拖动该公式,这会产生以下不良影响:
我已经对组合在一起的内容进行了编号。正如您在我示例中看到的,元素“24566”也在父元素“FD120465”中出现。结果是,在同一组中,在它之前找到的所有元素都映射到“Expense B”,但目标结果是,所有子元素都应映射到“Expense D”,但“24566”除外。以下是我在此示例中使用的公式:
=IFERROR(VLOOKUP(C11,$C$3:$D$8,2,0), D12)
我想到过几种处理这个问题的方法,但没有一种是我喜欢的。我可以制作两个不同的公式,一个只查看子元素,另一个只查看父元素。如果先放置子元素,则将错误的标签放入组中并不重要(“24566”将在橙色部分中标记为“Expense D”)。这也有缺点,会导致更多的工作(定义使用公式 1 和公式 2 的区域,然后手动完成工作或使用 VBA 过度处理...)
另一种方法是简单地取出每个子元素并将其与适当的映射一起放入表中。问题是父母每个月的项目可能会更多或更少,并且映射可能会发生变化(尽管这种情况不应该经常发生),因此管理每个子元素会变得乏味。我提供的样本与我拥有的相比很小(父母中有 15-20 个孩子)。
在我们找到缺点最少的解决方案之前,这是我最后一次尝试。有没有明显的(甚至不那么明显的)方法来解决这个问题干净地?
谢谢 !
答案1
如果您想要我怀疑您想要的东西并且从我怀疑您现在的位置开始,那么这种方法是有效的。(这不一定是从数据中获得结果的最佳方法,但至少可能有助于澄清所需的内容。)
添加一个辅助列,以便所有子项都有一个父项(假设它们确实有):
B11=IF(LEFT(C11,2)="FD",C11,B12) (按要求复制下来)
=IFERROR(VLOOKUP(C11,$C$3:$D$8,2,FALSE),VLOOKUP(B11,$C$3:$D$8,2,FALSE))
(在 D11 中,按要求向下复制)。
我假设表格底部的两个条目包含错别字。