在Excel 2010(或2007年 - 我有两个,虽然我的操作系统只有Win7 32位作为我们运行的一些遗留应用程序的限制),我需要找到如何从两个数据数组中找到并返回匹配值。
我有两个电子表格。一个是来自层级OLAP多维数据集维度的巨型平面文件(来自SAP BPC的37,000行)。另一个是我需要匹配的值表。我需要将第二个电子表格中的匹配值返回到第一个Sheet中的ColumnA - flatfile。
挑战在于,由于它是一个层级结构,我不能从Sheet1中选择一个匹配的列 - 匹配可以在每行的任何列中。所以,基本上,我正在考虑需要采取Sheet 1单行作为数组和Sheet 2列作为数组匹配的任何内容(我认为)。
在英语中,我希望Excel:对于Sheet1的每一行都有数据,查看整行中的所有内容(例如,范围B2:R2 - 我将Col A留作公式/匹配值的空白)。如果任何内容与报告类别列表中的任何内容匹配(即表2列A,范围A1:A42),则将Sheet2值返回到Sheet1!A2(我为匹配所做的空白列)。
这是一个带有食物寓言的数据样本。请注意,我已经创建了一个空白的ColumnA,并且每行中的数据向上进行了一个分类层次,其中ColB是基本级别,如果需要,它会重复,以便终端父级在ColF中:
现在,在下一个图像中是我想要使用的报告格式。请参阅,有时我们需要来自某些层级,有时来自其他层级的数据。
最后,我的电子表格将填充我想要的自定义报告类别(然后我可以针对聚合数据调整这些类别)。
我一直在通过怪物vlookup公式实现这一点,但是想知道是否还有另一个,更容易或者至少资源密集程度更低的方式,因为37,000行与vlookup语句嵌套8深度使Excel喜欢崩溃很多。因此,使用我的真实报告类别(sheet2称为All_Budget_Units),这是我目前使用的:
= IFERROR(VLOOKUP(IFERROR(VLOOKUP(IFERROR(VLOOKUP(IFERROR(VLOOKUP(IFERROR(VLOOKUP(IFERROR(VLOOKUP(C2,All_Budget_Units $ A $ 1:!$ A $ 39,1,FALSE),D2),All_Budget_Units $ A $ 1 :$ A $ 39,1,FALSE),E2),All_Budget_Units $ A $ 1:$ A $ 39,1,FALSE),F2),All_Budget_Units $ A $ 1:$ A $ 39,1,FALSE),G2),All_Budget_Units !$ A $ 1:$ A $ 39,1,FALSE),H2),All_Budget_Units $ A $ 1:$ A $ 39,1,FALSE),I2)