将数组和表名用于唯一值列表

时间:2016-07-25 03:17:13

标签: excel excel-formula excel-2010

我正在excel工作簿中构建一个摘要选项卡,该工作簿链接到许多其他工作簿以跟踪分层业务数据(即,下属团队的许多文件与跟踪所有数据的主工作簿交换数据)。为了使它更容易并增加一致性,我使用表格来处理所有数据并根据每个电子表格的特定标准“构建”表名称 - 然后使用INDIRECT将表格引用变为生命并完成我的计算。

为了简化我正在使用的公式,我一直在使用数组来检查所有表格的数据。例如,我为下属单元(Ref_Units)构建了一个表,其中包含单元的名称:ABC,EFG,XYZ。然后我有一个表(Ref_Tables)将我的Ref_Units转换为标准化的表名。公式类似于{=Ref_Units&"_2016_Sales_Rpt"}。现在我可以使用在几个不同位置查找数据的Ref_Tables来制作一些SUMIFS - 并且为了进行更新,我只需要更改Ref_Units。

“我的摘要”选项卡将是来自十几个+表格和多达十个工作簿的数据的高潮。摘要的基础是从下拉列表中收集的,这些列表指出了要汇总的类别和年份;这些值插入到一些INDIRECT公式中以生成表名和瞧。

现在,问题是:让我们说每个单元记录特定项目的销售数量和预测,如“电视”,“立体声”,“扁平餐具”,“蜡烛”等,这些项目中的每一个都有一个附带的类别它:“电子产品”,“家居用品”,“装饰”等。

我想要一个跨越所有单位数据的摘要,提取每个类别中的数字(我应该注意每个类别可能会更改,因此列表必须是动态的)。为了使列表动态化(并使我自己能够根据其他标准进行汇总),我使用在线发现的公式来生成唯一/不同值的列表。

现在,我正在使用INDEX/MATCHCOUNTIF来生成唯一的类别列表。所以,我的唯一列表从单元格C9开始,公式看起来像这样:

{=iferror(INDEX(INDIRECT(Ref_Tables&"[Category]"), MATCH(0, COUNTIF($C$8:C8, Ref_Tables&"[Category]"), 0)),"")}

此功能无效。我可以获得所需结果的唯一方法是输入公式的多个迭代,每个迭代使用Ref_Tables中的单个表名并与&连接。

示例:

{=iferror(INDEX(INDIRECT("ABC_2016_Sales_Report"&"[Category]"), MATCH(0, COUNTIF($C$8:C8, "ABC_2016_Sales_Report"&"[Category]"), 0)),"")&iferror(INDEX(INDIRECT("EFG_2016_Sales_Report"&"[Category]"), MATCH(0, COUNTIF($C$8:C8, "EFG_2016_Sales_Report"&"[Category]"), 0)),"")&iferror(INDEX(INDIRECT("XYZ_2016_Sales_Report"&"[Category]"), MATCH(0, COUNTIF($C$8:C8, "XYZ_2016_Sales_Report"&"[Category]"), 0)),"")}

**备注:查找数组在这里奇怪地输入,因为它们实际上是单元格引用,用于查找表名和列名,然后使用INDIRECT

生效

部分我的问题是,所得到的公式大约有10行,看起来很糟糕,但对于使用该工作簿的任何人来说,它看起来也太混乱了。

有没有办法让INDEX/MATCH查看多个表来生成更简洁的列表?

我应该注意到我的老板拒绝使用VBA /宏/数据透视表,因为我的办公室里没有多少技能足以解决这些方面的问题。帮助

0 个答案:

没有答案