从表列中获取以逗号分隔的唯一值列表的公式

从表列中获取以逗号分隔的唯一值列表的公式

我在 Excel 2016 中有一个表格:

在此处输入图片描述

ID  TIME_PERIOD
--  ---------------
1   FORECAST
2   HISTORY
3   BEYOND FORECAST
4   HISTORY
5   BEYOND FORECAST
6   BEYOND FORECAST
7   FORECAST
8   FORECAST
9   HISTORY
10  BEYOND FORECAST

当将表格打印为 PDF/报告时,我计划排除由于报告中的空间有限,因此我们将从报告打印区域中删除 TIME_PERIOD 列。

作为在报告中显示整个列的替代方法,我希望获得以逗号分隔的列表形式列出列的唯一值。


我需要列表的公式来遵循应用于该字段的任何过滤器。例如,如果我要过滤以仅显示“预测”,那么唯一列表将遵循该过滤器。

在此处输入图片描述


问题:

是否存在一个公式可以用来从表列中获取以逗号分隔的唯一值列表?

表格的数据源不断变化(刷新时会添加和删除行)。因此,公式需要动态引用整个列——而不是硬编码到特定范围。

答案1

如果我正确理解了您的任务,请尝试以下公式:

=TEXTJOIN(“,”,TRUE,UNIQUE(INDEX(B7:INDEX(B7:B1000,COUNTA(B7:B1000),1),,1),FALSE,FALSE))

在 Excel 2016 中尝试以下操作:

=SUBSTITUTE(CONCAT(TRANSPOSE(IFERROR(INDEX(INDEX(B7:INDEX(B7:B1000,COUNTA(B7:B1000),1),,1),SMALL(IF(MATCH(INDEX(B7:INDEX(B7:B1000,COUNTA(B7:B1000),1),,1),INDEX(B7:INDEX(B7:B1000,COUNTA(B7:B1000),1),,1),0)=ROW(INDIRECT("1:"&(ROWS(INDEX(B7:IN DEX(B7:B1000,COUNTA(B7:B1000),1),,1))-0))),MATCH(INDEX(B7:INDEX(B7:B1000,COUNTA(B7:B1000),1),,1),INDEX(B7:INDEX(B7:B1000,COUNTA(B7:B1000),1),,1),0),""),ROW(INDIRECT("1:"&(ROWS(INDEX(B7:INDEX(B7:B1000,COUNTA(B7:B1000),1),,1))-0))))),"#"))&", "),"#,","")

答案2

假设你的表名为表格1

=MID(CONCAT(IF(FREQUENCY(IF(SUBTOTAL(3,OFFSET(INDEX(Table1[TIME_PERIOD],1),ROW(Table1[TIME_PERIOD])-MIN(ROW(Table1[TIME_PERIOD])),)),MATCH(Table1[TIME_PERIOD],Table1[TIME_PERIOD],0)),ROW(Table1[TIME_PERIOD])-MIN(ROW(Table1[TIME_PERIOD]))+1),", "&Table1[TIME_PERIOD],"")),3,2^15)

这很可能需要CTRL+SHIFT+ENTER针对您的 Excel 版本进行提交。

相关内容